题目
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符满足的条件是:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例:
输入:s = “()[]{}”
输出:true
输入:s = “([)]{}”
输出:false
def isValid(s):
# 如果字符串不是偶数,直接返回false
# 因为字符只包含括号,所以只有偶数时才有可能匹配上
if len(s) % 2 == 1:
return False
dict = {
")": "(",
"]": "[",
"}": "{",
}
stack = list()
for ch in s:
# 代表遍历到右括号
if ch in dict:
# 看栈顶元素是否能匹配上,如果没有匹配上,返回false
if not stack or stack[-1] != dict[ch]:
return False
# 如果匹配上,弹出栈顶元素
stack.pop()
else:
# 匹配到左括号,入栈
stack.append(ch)
# 栈为空,代表s是有效串,否则是无效串
return not stack
if __name__ == "__main__":
print(isValid("([]){}"))
# return
False