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
}

版权声明:本文为luckydog612原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。