Balanced Brackets
1566 ワード
効率的にはstackの代わりにarrを使います
package main
import (
"fmt"
)
func main(){
var num int
fmt.Scanln(&num)
f := func(t []byte) bool {
h := make([]byte, len(t))
var top int
for _, v := range t {
switch v {
case '{', '[', '(':
h[top] = v
top++
case ')', ']', '}':
if top-1 < 0 {
return false
}
if v == ')' && h[top-1] != '(' {
return false
} else if v == ']' && h[top-1] != '[' {
return false
} else if v == '}' && h[top-1] != '{' {
return false
}
top--
}
}
if top == 0{
return true
}
return false
}
result := make([]bool, 0, num)
for i := 0; i < num; i++ {
var t string
fmt.Scanln(&t)
result = append(result, f([]byte(t)))
}
for _, val := range result {
if val == true {
fmt.Println("YES")
} else {
fmt.Println("NO")
}
}
}