problem
Given a string containing just the characters ‘(’, ‘)’, ‘{’, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.

An input string is valid if:

Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.

solution

i:这是我再次完成这个题目,现在记得最深的方法就是替换,因为有效括号的成对性,一定会被“()”,不断替换掉,直到为空(注意为空的情况)

python

class Solution:def isValid(self, s: str) -> bool:while ('()' in s or '{}' in s or '[]' in s):# s.replace("()","")这里再用替换的时候,忘记了,String是不可变类型,所以要重新符给一个变量s=s.replace('()','')s=s.replace('{}','')s=s.replace('[]','')return s==""

java

class Solution {public boolean isValid(String s) {//        这里java我没有找到提供查找子字符串是否在String中的函数,那么就循环length/2 次int length=s.length();if(length%1 == 1 ){return false;}if(length==0){return true;}for(int i=0;i<length/2;++i) {s = s.replace("()", "");s = s.replace("{}", "");s = s.replace("[]", "");if (s.isEmpty()) {return true;}}return false;}
}

ii:
使用堆栈,遇到’(’,’{’,’[‘入栈,遇到’)’,’}’,’]’,就出栈,比较是不是成对的,因为有效的括号一定会至少有一个’()’,’{}’,’[]'子字符串存在,当替换后子字符串如此关系也成立
注意空栈问题,还有最后很有可能不为空,在验证的时候,多设计一些特殊测试用例
再看LeetCode解题时,那些评论很是中肯,都是我没有观察到的特性

  • 如果栈的深度大于字符串长度的1/2,就返回false。因为当出现这种情况的时候,即使后面的全部匹配,栈也不会为空。
  • 先增加一个字符串长度的奇偶判断 s.length()&1 ,奇数直接返回false

python

class Solution:def isValid(self, s: str) -> bool:stack=[]for i in s:if i == '(' or i == '{' or i == '[':stack.append(i)else:if not stack:return Falsek=stack.pop()if k+i!='()' and  k+i!='[]' and k+i!='{}':return Falseif stack:return Falsereturn True

java

class Solution {public boolean isValid(String s) {int length = s.length();Stack<Character> stack = new Stack<>();for (int i = 0; i < length; ++i) {char j=s.charAt(i);if (j == '(' || j == '{' || j == '[') {stack.push(s.charAt(i));} else {if (stack.isEmpty() ){return false;}
//                String k = String.valueOf(stack.pop()+j); 得到的是两个字符相加后的整形String k=stack.pop()+String.valueOf(j);if (!(k.equals("()") ||k.equals("{}") ||k.equals("[]"))){return false;}}}if (stack.isEmpty()) {return true;}return false;}
}

LeetCode:20 vaild parentless相关推荐

  1. 有效的括号(leetcode 20)

    文章目录 1.问题描述 2.难度等级 3.热门指数 4.解题思路 5.实现示例 5.1 C++ 5.2 Golang 参考文献 1.问题描述 给定一个只包括 '(',')','{','}','[',' ...

  2. LeetCode 20. Valid Parentheses--笔试题--Python解法

    题目地址:Valid Parentheses - LeetCode Given a string containing just the characters '(', ')', '{', '}', ...

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

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

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

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

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

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

  6. 【Java】LeetCode 20 有效的括号 (运用数据结构:栈 解题)

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

  7. LeetCode: 20. Valid Parentheses

    0509第1题(虽然是08做的,但这会已经09了) 题目 Given a string containing just the characters '(', ')', '{', '}', '[' a ...

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

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

  9. LeetCode 20 有效的括号

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

最新文章

  1. Expression Blend实例中文教程(2) - 界面快速入门
  2. ftl数据类型转换以及list遍历的使用
  3. 数据库中Schema(模式)概念的理解
  4. sqlite工具类 java_Java之泛型、集合工具类
  5. 网页客户端调用gSoap发布服务,以及中文乱码问题
  6. JavaScript生成指定范围内的随机数
  7. XY插值算法C语言,常用的插值算法有哪些?
  8. 如何将两部手机内容互换_两部iPhone手机之间如何大量互传照片?
  9. 求n!最后一位非零数
  10. PAT 1072. 开学寄语(20)-PAT乙级真题
  11. application跟消息相关的东东
  12. c语言 com组件,com组件 C语言基础.ppt
  13. 多张DXF格式图纸网页上转换成PDF格式如何操作?
  14. 01_测试基础知识---功能测试常用方法/正交表的使用
  15. JAVA 房屋出租系统(韩顺平)
  16. dbeaver 设置编码_物料编码管理程序
  17. 基于Python的视频解析器
  18. 微信小程序商城有发展机会吗?
  19. 万和计算机学院,万和亿的换算(万和亿的换算计算器)
  20. https://juejin.im/post/5aa4a2e35188255589496eb8#comment

热门文章

  1. Iphone开发用导航控制器实现视图的分层切换(UINavigationController)
  2. http //t cn/xx 等链接的生成与还原
  3. Google Earth Engine(GEE)农作物种植结构提取
  4. gcc编译-m32、-mx32有什么区别
  5. outlook配置阿里企业邮箱
  6. 采用seam2的工具创建seam工程
  7. cairo填充_cairo图形库
  8. $happy-new(year[2006])
  9. 实时获取SDN网络拓扑中交换机流表项的思路
  10. Overture教程之五线谱介绍