题目:
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。


解题思路:
运用栈这种数据结构就行解题,遇到左括号就入栈,遇到右括号就将栈中的左括号出栈就行比较,考虑三种情况:
1 左括号比右括号多 -》程序执行完毕栈不为空-》FALSE
2 右括号比左括号多-》数组没遍历完栈就为空-》FALSE
3 左右括号不匹配-》FALSE
4 不是以上三种情况 -》TRUE

具体思路见代码注释:

class Solution {public boolean isValid(String s) {Stack<Character> stack = new Stack<>();//定义一个存放字符类型的栈for (int i = 0; i < s.length(); i++) //遍历传入的数组if (s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{') { //如果是左括号 入栈操作stack.push(s.charAt(i));}else{ //没有左括号了 对右括号进行判断if (stack.empty()){return false; //右括号多}//栈不为空的话char top=stack.peek();//记录此时栈顶的左括号if (top=='(' && s.charAt(i)==')' ||top=='[' && s.charAt(i)==']' ||top=='{' && s.charAt(i)=='}'  ){ //如果左右括号匹配 弹出当前栈顶左括号stack.pop();}else{return false; //左右括号不匹配}}}if (!stack.empty()){ //遍历完括号数组后,看栈是否为空,也就是是否都匹配了return false; //左括号多}return true; //栈为空的情况,且遍历完了数组,则括号都匹配,返回TRUE}
}

【Java】LeetCode 20 有效的括号 (运用数据结构:栈 解题)相关推荐

  1. [字符串题-java实现]20. 有效的括号

    题目 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 示例 ...

  2. LeetCode 20. 有效的括号 golang(三)

    20. 有效的括号 这个题做了三次,前两次的解法现在觉得是算不得正确的. 看的多写得少 做的多总结少 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有 ...

  3. 算法训练Day11|LeetCode 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值

    题目链接:20. 有效的括号 第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false 第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字 ...

  4. LeetCode 20. 有效的括号(Valid Parentheses)

    栈思想 关于有效括号表达式的一个有趣属性是有效表达式的子表达式也应该是有效表达式. 整个表达式是有效的,而它的子表达式本身也是有效的.这为问题提供了一种递归结构.(栈思想) 从整体表达式中一次删除一个 ...

  5. leetcode 20. 有效的括号

    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符串可被认 ...

  6. LeetCode 20. 有效的括号(栈)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭 ...

  7. LeetCode 20 有效的括号

    https://leetcode-cn.com/problems/valid-parentheses/ 解决方案 class Solution {public boolean isValid(Stri ...

  8. LeetCode 678. 有效的括号字符串(栈)

    1. 题目 给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串.有效字符串具有如下规则: 任何左括号 ( 必须有相应的右括号 ). 任何右括号 ) 必须有相应 ...

  9. 【LeetCode笔记】20.有效的括号(Java、栈) 21. 合并两个有序链表(Java)

    文章目录 20. 题目描述 & 解题 21. 题目描述 & 解题 1. 一开始的写法 2. 参考大佬的写法 两道简单类型连着,就直接一起写了. 20. 题目描述 & 解题 括号 ...

最新文章

  1. Isometric Game 及译法漫谈
  2. Activity如何后台运行?不是缓存,是运行。
  3. 将源码包打包成RPM包
  4. 元宇宙大比拼:英伟达Nvidia,Facebook,iwemeta
  5. 碰撞的小球 ccf (模拟)
  6. 如果淘宝双十一架构用. Net Core,如何“擒住”高并发、高可用、低延迟?
  7. python字典替换值_python字典改变value值方法总结
  8. 【Linux】Linux的常用远程工具
  9. 2008年不错的图书
  10. wpf中button的无边框实现
  11. Linux系统原理(工作模式)
  12. 电子邮件通知系统前十名的 ”磁盘贪婪用户“
  13. SetTimer函数的用法
  14. yyuc php,YYUC框架与YYUC手册资料下载 | 无名
  15. ADS仿真功率放大器模型导入报错问题解决
  16. 爱老虎油和你探索flash中的对象
  17. 51单片机教程__模块化编程
  18. 操作系统笔记 清华大学陈渝
  19. 复旦大学计算机学院金玲飞,金玲飞 - 复旦大学 - 计算机科学技术学院
  20. 简单操作拥有Win7/XP双系统

热门文章

  1. Redis中集合set数据类型(增加(添加元素)、获取(获取所有元素)、删除(删除指定元素))
  2. 论文不公开代码,应该被直接拒稿?
  3. 计算摄影 | 计算机如何学会自动裁剪图片(自动构图)?
  4. 理解Meta Learning 元学习,这篇文章就够了!
  5. 可复现的图像降噪算法总结——超赞整理
  6. 技巧 | OpenCV中如何绘制与填充多边形
  7. https协议原理过程
  8. Flutter 布局控件完结篇
  9. 第6章:可维护性软件构建方法 6.2可维护性设计模式
  10. 在iOS端如何使用Charles用作http调试