问题描述
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
例如:
1 | 输入:s = "()" |
1 | 输入:s = "()[]{}" |
1 | 输入:s = "(]" |
即左右括号必须是闭合的。
解题思路
使用栈结构来处理这个问题非常简单。
我们从左到右依次扫描字符串的每一个字符,如果是([{
左括号就入栈,如果是)]}
右括号就从栈里弹出栈顶的元素,然后匹配该字符和栈顶元素是否是成对的。
例如扫描到字符(
,然后栈顶元素是)
,则成对,否则不成对则返回False
扫描完字符串,如果栈里没有元素则说明括号都是成对的,匹配成功。
1 | class Solution: |
原链接