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 }