func isValid(s string) bool {
// 如果字符串长度为奇数,直接返回 false
if len(s)&1 == 1 {
return false
}
// 创建一个栈,用于存储左括号
stack := make([]byte, len(s))
top := 0
// 遍历字符串中的每一个字符
for i := 0; i < len(s); i++ {
// 如果是左括号,将其入栈
if s[i] == '(' || s[i] == '{' || s[i] == '[' {
stack[top] = s[i]
top++
} else {
// 如果是右括号,判断栈是否为空
if top == 0 {
return false
}
// 如果栈不为空,判断栈顶元素是否与当前右括号匹配
if s[i] == ')' && stack[top-1] != '(' {
return false
}
if s[i] == '}' && stack[top-1] != '{' {
return false
}
if s[i] == ']' && stack[top-1] != '[' {
return false
}
// 如果匹配成功,将栈顶元素出栈
top--
}
}
// 如果栈为空,说明所有括号都匹配成功,返回 true
return top == 0
}