题目
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = "()"
输出:true
思路
使用一个栈存储所有的左括号,当遇到右括号时,找栈顶元素,看看栈顶元素是否与当前右括号匹配。如果遇到不匹配的直接返回False,全部匹配完如果栈的长度为0说明能够完全匹配,返回True,否则返回False。
class Solution:
def isValid(self, s: str) -> bool:
stack = []
right_to_left = {'}':'{',']':'[',')':'('}
for i in range(len(s)):
if s[i]=='(' or s[i]=='[' or s[i]=='{':
stack.append(s[i])
if s[i]==')' or s[i]==']' or s[i]=='}':
if len(stack)==0:
return False
left = stack.pop()
if left != right_to_left[s[i]]:
return False
return True if len(stack)==0 else False