Leetcode---栈系列刷题(python3实现)----#20有效的括号
程序员文章站
2022-03-30 22:30:03
我最近在学习python3,基础不是很好,所以准备在Leetcode上刷题,这个作为笔记记录我的,如果大家看到有错误,拜托大家帮我指出,谢谢啦~ ......
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()" 输出: true
示例 2:
输入: "()[]{}" 输出: true
示例 3:
输入: "(]" 输出: false
示例 4:
输入: "([)]" 输出: false
示例 5:
输入: "{[]}" 输出: true
class solution: def isvalid(self, s): stack = [] flag = 1 if(len(s)%2!=0): #如果长度为奇数则一定没有匹配成功 flag = 0 else: for i in range(len(s)): if s[i] == "(" or s[i] == "[" or s[i] == "{": stack.append(s[i]) continue if stack: a = stack[len(stack)-1] #取栈顶元素 if s[i] == ")": #如果括号可以匹配成功,则相应的左括号右括号的位置是相对的,所以可以取出栈顶元素进行比较 if a != "(": flag = 0 stack.pop() elif s[i] == '}': if a != "{": flag = 0 stack.pop() elif s[i] == "]": if a != "[": flag = 0 stack.pop() if stack != []: #如果扫描过一遍仍有元素在栈内,说明有的括号没有匹配到,则没有匹配成功 flag = 0 if flag == 1: return true else: return false
这个代码还没有bugfree,有时间我会改进的~~,欢迎大家指出我的错误和不足之处~~~一起加油~
上一篇: IRC笑话一则
下一篇: 微信公众平台开发实现2048游戏的方法