【题目描述】
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
【解答】
- 解法:利用栈的先入后出的特性,对括号进行匹配
def isValid(self, s: str) -> bool: if len(s)%2 == 1: return False #如果字符串长度是奇数,返回False dic = {'(':')','[':']','{':'}'} stack = [] for i in range(len(s)): if s[i] == '(' or s[i] == '[' or s[i] == '{': #将所有左括号入栈 stack.append(s[i]) if len(stack) == 0: #如果右括号没有匹配的左括号 return False if s[i] == dic[stack[-1]]: #如果有匹配的括号则出栈 stack.pop() return len(stack) == 0
执行用时:34ms
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
【解答】
- 解法:利用栈的先入后出的特性,对括号进行匹配
def isValid(self, s: str) -> bool: if len(s)%2 == 1: return False #如果字符串长度是奇数,返回False dic = {'(':')','[':']','{':'}'} stack = [] for i in range(len(s)): if s[i] == '(' or s[i] == '[' or s[i] == '{': #将所有左括号入栈 stack.append(s[i]) if len(stack) == 0: #如果右括号没有匹配的左括号 return False if s[i] == dic[stack[-1]]: #如果有匹配的括号则出栈 stack.pop() return len(stack) == 0
执行用时:34ms