给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
示例 1:
输入: s = "()"
输出: true
示例 2:
输入: s = "()[]{}"
输出: true
示例 3:
输入: s = "(]"
输出: false
示例 4:
输入: s = "([)]"
输出: false
示例 5:
输入: s = "{[]}"
输出: true
func isValid(s string) bool {
var charMap = map[rune]rune{
'(': ')',
'{': '}',
'[': ']',
}
var stack []rune
for _, c := range s {
switch c {
case '(':
fallthrough
case '{':
fallthrough
case '[':
stack = append(stack, c)
default:
if len(stack) > 0 {
temp := stack[len(stack)-1]
stack = stack[:len(stack)-1]
if c != charMap[temp] {
return false
}
} else {
return false
}
}
}
return len(stack) == 0
}