2026-07-160

有效符号

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

有效字符串需满足:

  • 左括号必须用相同类型的右括号闭合。
  • 左括号必须以正确的顺序闭合。
  • 每个右括号都有一个对应的相同类型的左括号。

实现思路

  • 题目关键
    • 符号需要成对的对称出现
  • 怎么验证是否成对
    • 遇到左符号进栈
    • 遇到右符号,判断栈顶的元素是否匹配
      • 匹配,则弹出,继续后续元素的验证
      • 不匹配,直接return false

代码实现

go
func 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 许可协议。转载请注明出处!