LeetCode-20.有效的括号

题目描述

给定一个只包括 '('')''{''}''['']' 的字符串s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。

示例

1
2
输入:s = "()"
输出:true
1
2
输入:s = "()[]{}"
输出:true
1
2
输入:s = "]"
输出:false

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
func isValid(_ s: String) -> Bool {
let map: [Character: Character] = ["{": "}", "(": ")", "[": "]"]
var stack = [Character]()

for c in s {
if let value = map[c] {
stack.append(value) // 如果是左括号,入栈一个右括号
} else {
if c != stack.popLast() { // 注意 stack.popLast()可能为空也可能不为空
return false
}
}
}
return stack.isEmpty
}