做题流程
分析题目
leetcode 20
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: “()”
输出: true
示例 2:
输入: “()[]{}”
输出: true
补充知识点
pthon:
- 列表 : 如 a = [‘a’,‘b’];
- 字典: 如 dict = {‘a’ : 1, ‘b’: 2};
- not : 取反运算符, a = 1 print(not a) 输出False;
- or: 取或运算;
- for x in list: 循环结构, 可遍历列表;
- list.append(obj): 在列表末尾添加新对象;
编写代码
"""
思路
遍历列表s,遇见左半边括号就存储到新的列表res中,
如果遇见右半边括号:1 判断新的列表是否为空(是否包含与之匹配的左半括号) 2 若列表不为空,列表res末尾的左半字符属否与当前的右半字符匹配
遍历完列表后, 判断res是否为空,若为空则是有效字符串
"""
class Solution:
def isValid(self, s):
res = []
judge_map = {')': '(', ']': '[', '}': '{'}
for i in s:
if i not in judge_map:
res.append(i)
elif not res or judge_map[i] != res.pop():
return False
return not res