LeetCode-20-有效括号


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

有效字符串需满足:

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

https://leetcode-cn.com/problems/valid-parentheses/

思路

  • 滑动窗口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
type stack struct {
arr []int32
}

func (s *stack) push(c int32) {
s.arr = append(s.arr, c)
}
func (s *stack) pop() int32 {
var t int32
if !s.isEmpty() {
t = s.arr[len(s.arr)-1]
s.arr = s.arr[:len(s.arr)-1]
}
return t
}
func (s *stack) isEmpty() bool {
if len(s.arr) == 0 {
return true
}
return false
}

func isValid(s string) bool {
m := map[int32]int32{
')': '(',
']': '[',
'}': '{',
}
sta := stack{arr: make([]int32, 0, 0)}
for _, v := range s {
if mv, ok := m[v]; ok {
if sta.pop() != mv {
return false
}
} else {
sta.push(v)
}
}
if sta.isEmpty() {
return true
}
return false
}

  目录