LeetCode 20. 有效的括号(Golang)


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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"
输出: true

示例 2:

输入: "()[]{}"
输出: true

示例 3:

输入: "(]"
输出: false

示例 4:

输入: "([)]"
输出: false

示例 5:

输入: "{[]}"
输出: true
func isValid(s string) bool {
    flag := false
	m := make(map[byte]byte)
	m['('] = ')'
	m['['] = ']'
	m['{'] = '}'
	sli := make([]byte, 0)
	if len(s) == 0 {
		return true
	}
	if len(s)%2 == 1 {
		return false
	}
	for i, b := range s {
		if i == 0 && (s[i] == ')' || s[i] == ']' || s[i] == '}') {
			return false
		}
		if b == '(' || b == '[' || b == '{' {
			sli = append(sli, byte(b))
		} else if b == ')' || b == ']' || b == '}' {
			left := sli[len(sli)-1]
			sli = sli[:len(sli)-1]
			if m[left] == byte(b) {
				flag = true
			} else {
				return false
			}
		}
		if i == len(s)-1 && len(sli) != 0 {
			flag = false
		}
	}
	return flag
}

文章作者: Jack Li
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Jack Li !
评论
  目录