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. 我把梦打开,只为你进来
  2. Python 技术篇-全局与当前socket超时连接时间设置方法实例演示,查看socket超时连接时间
  3. BAT 才不关心币价,19年的5大重点在这里!
  4. 通过CSS修改checkbox样式(利用label的for属性进行焦点传递)
  5. 创新实训个人记录:approximation factor, maximum matchingvertex cover
  6. python partition函数_如何使用正确的姿势进行高效Python函数式编程?
  7. python-configparser模块
  8. 【XCTF 攻防世界 web 练习详解系列(二)】【get_post的两种解法】
  9. 几个互联网巨头的社区团购还不收手?
  10. 定时重启软件_办公电脑怎样设置定时重启?依靠这款工具即可轻松实现
  11. C++ Error C2664:无法将参数 1 从“const char [9]”转换为“LPCWSTR”解决方案
  12. linux vi命令
  13. 高等数学和数学分析教材推荐及其学习方法浅谈
  14. java读取word2010_Java 添加、读取、删除Word脚注/尾注
  15. Chrome离线安装CRX插件方法
  16. 超帅的C核心相关总结
  17. 阿里fastjson将集合转为树形结构【非原创】
  18. 加密项目是否采用DAO模式 首先考量这8个因素
  19. 【目标检测】将目标检测数据集划分为训练集、验证集与测试集 python代码
  20. go语言的控制台输入

热门文章

  1. html折叠 手风琴效果,jQuery制作效果超棒的手风琴折叠菜单
  2. android获取wifi开关,Android WiFi开发(一)--WiFi开关与状态监听
  3. Linux网络之DNS域名解析概述
  4. kali 桥接上网_kali新手入门教学(16)--如何在校园网下使用桥接模式上网
  5. 所有学java的女生都进来看看
  6. richface 皮肤
  7. 为什么说线上教育是未来的趋势?
  8. pypy+uwsgi+dango+nginx 简单部署
  9. 巧妙理解动态规划算法
  10. 中学计算机教师人生职业规划,初中教师个人职业发展规划