LintCode python 小白-简单题-423有效的括号序列
2017-08-02 23:40
253 查看
题目:给定一个字符串所表示的括号序列,包含以下字符: ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, 判定是否是有效的括号序列。
样例:括号必须依照 “()” 顺序表示, “()[]{}” 是有效的括号,但 “([)]”则是无效的括号。
思路:先定义一个字典,将左括号作为字典的键,右括号作为值,作为配对的依据。
然后循环字符串,当得到左括号,放进列表中(栈),若得到右括号,先判断列表有无左括号,如有,再与字典中栈顶元素为键的值匹配,判断结果,最后再判断最后的栈是否还存在元素,若存在代表还有左括号没能被匹配,出错。
代码:
样例:括号必须依照 “()” 顺序表示, “()[]{}” 是有效的括号,但 “([)]”则是无效的括号。
思路:先定义一个字典,将左括号作为字典的键,右括号作为值,作为配对的依据。
然后循环字符串,当得到左括号,放进列表中(栈),若得到右括号,先判断列表有无左括号,如有,再与字典中栈顶元素为键的值匹配,判断结果,最后再判断最后的栈是否还存在元素,若存在代表还有左括号没能被匹配,出错。
代码:
class Solution: # @param {string} s A string # @return {boolean} whether the string is a valid parentheses def isValidParentheses(self, s): # Write your code here if len(s)<=1: return False a=list(s) b=[] #存放左括号的栈 c={'(':')','[':']','{':'}'} #字典存储 for i in a: if i in c: #如果是字典中的键,即左括号,放进栈 b.append(i) else: if len(b)==0: #先判断是否有左括号存在 return False else: #字典得到该键的值==栈顶值对应的右括号 if c.get(b[-1])!=i: return False else: del b[-1] #删除栈顶元素 if len(b)!=0: #若还存在左括号,此时已没有右括号,出错 return False return True
相关文章推荐
- [Lintcode] #423 有效的括号序列
- lintcode-423-有效的括号序列
- 【堆栈】[Lintcode]有效的括号序列
- LintCode python 小白-简单题-638-Strings Homomorphism
- [LintCode] 有效的括号序列 - JS
- 有效的括号序列,lintcode
- lintcode 有效的括号序列
- 有效的括号序列(LintCode)
- lintcode有效的括号序列
- 有效的括号序列-LintCode
- 423 - 有效括号序列
- LintCode 有效的括号序列
- lintcode之有效的括号序列(valid parenthese)
- lintcode ----有效的括号序列
- 【Lintcode】有效的括号序列
- Lintcode 有效的括号序列
- [LintCode] 有效的括号序列
- python_lintcode_简单题 _44最小子数组_41最大子数组
- LintCode python 小白-简单题-569各位相加
- 小白入门python之在命令框中实现简单的python代码