Terminus

Give time to civilization, not to civilization

0%

有效的括号

题目

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

有效字符串需满足:

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

解法

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
func isValid(s string) bool {
brakets := []byte(s)
stack := make([]byte, len(brakets))
stack[0] = brakets[0]
index := 1
for i := 1; i < len(brakets); i++ {
if brakets[i] == ')' && index - 1 >= 0 && stack[index - 1] == '(' {
index -= 1
continue
}
if brakets[i] == ']' && index - 1 >= 0 && stack[index - 1] == '[' {
index -= 1
continue
}

if brakets[i] == '}' && index - 1 >= 0 && stack[index - 1] == '{' {
index -= 1
continue
}

stack[index] = brakets[i]
index += 1
}

return index == 0
}