32 lines
586 B
Go
32 lines
586 B
Go
package q20
|
|
|
|
func isValid(s string) bool {
|
|
stack := make([]byte, 0, len(s)/2)
|
|
|
|
for i := range len(s) {
|
|
switch s[i] {
|
|
case '(', '[', '{':
|
|
stack = append(stack, s[i])
|
|
case ')':
|
|
if len(stack) == 0 || stack[len(stack)-1] != '(' {
|
|
return false
|
|
}
|
|
stack = stack[:len(stack)-1]
|
|
|
|
case ']':
|
|
if len(stack) == 0 || stack[len(stack)-1] != '[' {
|
|
return false
|
|
}
|
|
stack = stack[:len(stack)-1]
|
|
|
|
case '}':
|
|
if len(stack) == 0 || stack[len(stack)-1] != '{' {
|
|
return false
|
|
}
|
|
stack = stack[:len(stack)-1]
|
|
}
|
|
}
|
|
return len(stack) == 0
|
|
}
|
|
|
|
var _ = isValid
|