LeetCode-20-有效括号


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

有效字符串需满足:

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

https://leetcode-cn.com/problems/valid-parentheses/

思路

  • 滑动窗口
type stack struct {
    arr []int32
}

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
}

评论
  目录