题目:
给定一个只包括
'('
,')'
,'{'
,'}'
,'['
,']'
的字符串s
,判断字符串是否有效。有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
来源:力扣(LeetCode)
链接:力扣
示例:
示例 1:
输入:s = "()"
输出:true
示例 2:输入:s = "()[]{}"
输出:true
示例 3:输入:s = "(]"
输出:false
解法:
使用栈,如果是左括号就入栈,如果是右括号就和栈顶元素匹配,匹配成功就出栈,匹配失败就返回False。
知识点:
1.栈:Python中使用list实现栈。
2.list.pop(offset):删除并返回列表中的一个元素,offset用于指定删除元素的索引,可省略,默认值为-1。
代码:
class Solution: def isValid(self, s: str) -> bool: stack = [] for symbol in s: if symbol in ['(', '[', '{']: stack.append(symbol) else: if len(stack) == 0: return False pre = stack[-1] if symbol == ')': if pre == '(': stack.pop() else: return False elif symbol == ']': if pre == '[': stack.pop() else: return False else: if pre == '{': stack.pop() else: return False return True if len(stack) == 0 else False