Leetcode P20 有效的括号
Leetcode 20. 有效的括号
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
1 | 输入: "()" |
示例 2:
1 | 输入: "()[]{}" |
示例 3:
1 | 输入: "(]" |
示例 4:
1 | 输入: "([)]" |
示例 5:
1 | 输入: "{[]}" |
思路
括号不匹配的情况很多,但匹配的情况就3种:()
,[]
,{}
。
以前刚学算法的时候看过一个大佬写的暴力解法,他把不匹配的情况的情况穷举出来了!他那个跑的飞快,但巨复杂。
我脑子没那么好,写不出他那个来。所以我选择老老实实用栈。我的思路很直接,遇到前括号就入栈,遇到后括号就出栈。如果每一步都匹配,且最后栈为空,就匹配成功。这个思路和人去判断是一致的。
实现
1 | class Solution: |
其实这代码是我以前刚学的时候写的了,所以很慢。。。