括号序列
题目
给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。
eg:
输入"["
输出 False
输入“{}”
输出 True
分析
- 定义一个栈,列表就行,用来接收或者比较 S 的每个字符。
- 首先进行判断,如果栈为空,直接 append,否则的话进行判断,如果和前一个字符相等,直接添加,因为相等的字符肯定不是括号序列,然后依次进行判断每个字符和栈顶字符是否是一对,如果是就弹出栈顶。
实现代码:
#!/usr/bin/env python # -*- encoding: utf-8 -*- class Solution: def isValid(self, s): valid_list = [] for valid in s: if len(valid_list) == 0: valid_list.append(valid) elif valid_list[-1]==valid: valid_list.append(valid) else: if valid =="}" and valid_list[-1]=="{": valid_list.pop() elif valid =="]" and valid_list[-1]=="[": valid_list.pop() elif valid ==")" and valid_list[-1]=="(": valid_list.pop() return False if len(valid_list) else True if __name__ == "__main__": s = Solution() result = s.isValid("[(){}]") print(result)
不论你在什么时候开始,重要的是开始之后就不要停止。
不论你在什么时候结束,重要的是结束之后就不要悔恨。