给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
1)左括号必须用相同类型的右括号闭合。
2)左括号必须以正确的顺序闭合。
示例
输入:s = "()[]{}" 输出:true
输入:s = "{[]}" 输出:true
解析
1)这道题在之前介绍栈结构时做过,数据结构之栈与括号匹配问题
2)构造栈结构太复杂,可以用列表模拟
3)本题的关键就是找对应关系,先把括号压入栈中
4)右括号需要到栈中找左括号的对应,找到了则左括号出栈,没有则继续入栈
5)最后判断栈是否为空,为空则表示全部匹配上了
代码示例
def isValid(s: str) -> bool: if len(s) % 2 != 0: return False dct = {')':'(', '}':'{', ']':'['} lst = [] for i in s: if lst == []: lst.append(i) continue if i in dct and dct[i] == lst[-1]: lst.pop() else: lst.append(i) return len(lst) == 0 s = "(){[]" print(isValid(s))
执行用时:32 ms, 在所有 Python3 提交中击败了 92.32% 的用户.
本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/349