Skip to content

有效的括号 ​

难度:⭐⭐ 面试基础 ​

考点 ​

  • 栈的经典应用
  • 字符匹配
  • 边界处理

题目描述 ​

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

有效字符串需满足:

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

函数签名 ​

go
func isValid(s string) bool

示例 ​

输入:s = "()[]{}"
输出:true

输入:s = "(]"
输出:false

输入:s = "{[()]}"
输出:true

提示 ​

  • 遇到左括号入栈,遇到右括号弹栈匹配
  • 最后栈必须为空

参考答案(Go) ​

点击展开参考答案
go
//go:build ignore

package answer

func isValid(s string) bool {
	stack := make([]byte, 0)
	pairs := map[byte]byte{
		')': '(',
		']': '[',
		'}': '{',
	}
	for i := 0; i < len(s); i++ {
		ch := s[i]
		if ch == '(' || ch == '[' || ch == '{' {
			stack = append(stack, ch)
		} else {
			if len(stack) == 0 || stack[len(stack)-1] != pairs[ch] {
				return false
			}
			stack = stack[:len(stack)-1]
		}
	}
	return len(stack) == 0
}

持续学习,持续构建。