1 Star 0 Fork 0

HanYong/leetcode

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
20.有效的括号.go 1.65 KB
一键复制 编辑 原始数据 按行查看 历史
HanYong 提交于 2023-05-17 18:02 +08:00 . hash
/*
* @lc app=leetcode.cn id=20 lang=golang
*
* [20] 有效的括号
*/
// 2-2. stack
// 是左括号就进栈一个右括号
// 不是左括号就比较栈顶元素
// 算是2-1的优化版
// @lc code=start
func isValid(s string) bool {
stack := make([]byte, 0)
for i := 0; i < len(s); i++ {
if s[i] == '(' {
stack = append(stack, ')')
} else if s[i] == '[' {
stack = append(stack, ']')
} else if s[i] == '{' {
stack = append(stack, '}')
} else if len(stack) > 0 && stack[len(stack)-1] == s[i] {
stack = stack[:len(stack)-1]
} else {
return false
}
}
return len(stack) == 0
}
// @lc code=end
// 2-1. stack
// 左括号就入栈
// 右括号就匹配栈顶
// 匹配成功就出栈
// 匹配不上就不符合
// 最后栈空了就符合,不为空就不符合
// @lc code=start
func isValid(s string) bool {
stack := make([]byte, 0)
for i := 0; i < len(s); i++ {
if s[i] == '(' || s[i] == '[' || s[i] == '{' {
stack = append(stack, s[i])
} else if s[i] == ')' && len(stack) > 0 && stack[len(stack)-1] == '(' {
stack = stack[:len(stack)-1]
} else if s[i] == ']' && len(stack) > 0 && stack[len(stack)-1] == '[' {
stack = stack[:len(stack)-1]
} else if s[i] == '}' && len(stack) > 0 && stack[len(stack)-1] == '{' {
stack = stack[:len(stack)-1]
} else {
return false
}
}
return len(stack) == 0
}
// @lc code=end
// 1. 暴力,一遍一遍又一遍
// @lc code=start
func isValid(s string) bool {
for true {
l := len(s)
s = strings.Replace(s, "()", "", -1)
s = strings.Replace(s, "[]", "", -1)
s = strings.Replace(s, "{}", "", -1)
if l == len(s) {
break
}
}
return len(s) == 0
}
// @lc code=end
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/yinhu000/leetcode.git
git@gitee.com:yinhu000/leetcode.git
yinhu000
leetcode
leetcode
master

搜索帮助

371d5123 14472233 46e8bd33 14472233