给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
gofunc isValid(s string) bool {
stack := make([]rune, 0)
// 右括号与对应左括号的映射
pairs := map[rune]rune{
')': '(',
']': '[',
'}': '{',
}
for _, ch := range s {
switch ch {
case '(', '[', '{':
// 左括号入栈
stack = append(stack, ch)
case ')', ']', '}':
// 栈为空,说明没有对应的左括号
if len(stack) == 0 {
return false
}
// 检查栈顶左括号是否匹配
top := stack[len(stack)-1]
if top != pairs[ch] {
return false
}
// 匹配成功,弹出栈顶元素
stack = stack[:len(stack)-1]
}
}
// 最后栈为空,说明所有括号都成功匹配
return len(stack) == 0
}
本文作者:曹子昂
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!