leetcode 20. 有效的括号

题解

通过栈解决,左括号入栈,右括号出栈比较

示例代码(go)

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
func isValid(s string) bool {
stack := make([]byte, 0)
for _, v := range s {
v1 := byte(v)
if v1 == '(' || v1 == '{' || v1 == '[' {
stack = append(stack, v1)
} else {
n := len(stack)
if n == 0 {
return false
}
v2 := stack[n-1]
stack = stack[:n-1]
if v1 == ')' && v2 != '(' {
return false
}
if v1 == '}' && v2 != '{' {
return false
}
if v1 == ']' && v2 != '[' {
return false
}
}
}
if len(stack) != 0 {
return false
}
return true
}