题目:
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号
链接:leetcode.cn/problems/va…
解题思路:【栈】
- 由于字符串中只包含了括号,首先可以直接根据长度判断,奇数则直接返回False,偶数则进入接下来程序。
- 建立一个栈,循环字符串,当遇到右括号的时候就入栈,遇到左括号的时候就出栈,此时判断出栈的左括号是否与遇到的右括号是否是一对,若不是,则返回False;若是,则继续执行,循环完字符串后,判断栈是否为空,为空则返回True,否则返回False。
代码:
class Solution:
def isValid(self, s: str) -> bool:
if len(s)% 2 != 0:
return False
mapping_dict= {'(': ')', '[': ']', '{': '}', '?': '?'}
stack = ['?']
for c in s:
if c in mapping_dict:
stack.append(c)
elif mapping_dict[stack.pop()] != c:
return False
return len(stack) == 1