LeetCode每日一题--有效的括号
2020-03-15 18:22
351 查看
【前言】坚持日更LeetCode刷题系列
不积跬步,无以至千里;不积小流,无以成江海。愿与诸君共勉!
【题目】20.有效的括号
题目描述:给定一个只包括
'(',')','{','}','[',']'的字符串,判断字符串是否有效。
有效字符串需满足:
1.左括号必须用相同类型的右括号闭合。
2.左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例:
示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true 示例 3: 输入: "(]" 输出: false 示例 4: 输入: "([)]" 输出: false 示例 5: 输入: "{[]}" 输出: true
思路一:通过python中的列表实现类似栈的功能,实现方法通括号匹配问题。具体代码如下:
class Solution(object): def isValid(self, s): """ :type s: str :rtype: bool """ stack = [] for i in range(len(s)): #可自行运行样例理解 if(s[i]=='('): stack.append(')') elif(s[i]=='['): stack.append(']') elif(s[i]=='{'): stack.append('}') else: if(len(stack)==0 or s[i] != stack.pop()): return False if len(stack)==0: #即所有的括号都得到了匹配 return True else: return False
运行结果:
Notice:该括号有效包含大括号在小括号内等类似情况,与生活实际有偏差。
关于其中一些知识的链接:
思路二:replace函数的妙用,要使括号有效,那么一定最里层为配对的括号,将该对括号replace,以此类推,若最后得到空串,则返回true,否则返回false。具体代码如下(参考自LeeCode评论区大神):
class Solution: def isValid(self, s): while '{}' in s or '()' in s or '[]' in s: s = s.replace('{}', '') s = s.replace('[]', '') s = s.replace('()', '') return s == ''
运行结果:
关于其中一些知识的链接:
分享就到这里了,欢迎大家一起交流讨论。
注明:
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
- 点赞 2
- 收藏
- 分享
- 文章举报
相关文章推荐
- (LeetCode每日一刷06)有效的括号
- LeetCode每日一题 001 有效的括号
- 每日一恋 - LeetCode 20.有效的括号 & 150. 逆波兰表达式求值
- LeetCode每日一题——T20. 有效的括号(易):栈、哈希表
- [Leetcode] 20题 有效的括号
- LeetCode 32. 最长有效括号
- LeetCode每日一题——T22. 括号生成(中):回溯算法——通用解法
- LeetCode 20 有效的括号 c语言
- 【C++】20.有效的括号【leetcode】——栈数据结构
- LeetCode 32 Longest Valid Parentheses(最长有效括号)(*)
- leetCode 20.Valid Parentheses (有效的括号) 解题思路和方法
- LeetCode----32. Longest Valid Parentheses(最长有效括号)
- LeetCode刷题笔记 [20] 有效的括号
- LeetCode | 32. Longest Valid Parentheses——最长有效括号匹配长度
- leetcode1,有效的括号
- leetcode 20 有效的括号 c++
- 力扣(LeetCode 20)有效的括号 python
- LeetCode-Easy1.2:罗马数字转整数、最长公共前缀、有效括号
- 【LeetCode刷题】有效的括号字符串Valid Parentheses(java)
- [LeetCode] Longest Valid Parentheses 最长有效括号