给定一个只包括 '(',')','{','}','[',']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
提示:
- 1 <= s.length <= 104
- s 仅由括号 '()[]{}' 组成
func isValid(s string) bool {
list := make([]int32, 0)
//字典
dict := map[int32]int32{
'(': ')',
'[': ']',
'{': '}',
}
for _, v := range s {
if v == '(' || v == '[' || v == '{' {
//开始符号进入队列
list = append(list, v)
} else {
//判断是否没有开始就有结束符号
listLen := len(list)
if listLen == 0 {
return false
}
//先进后出 判断是否为对应符号
if dict[list[listLen-1]] == v {
list = list[:listLen-1]
} else {
return false
}
}
}
//如还有残留 表示缺少结束符号
if len(list) > 0 {
return false
}
return true
}