GO题解 | #括号序列#
来自
【GO题解】
594 浏览
0 回复
2021-05-08
括号序列
http://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2
go解题答案
- 时间复杂度O(1)
- 思路概括:栈
- 思路核心:
1、因为是对称的,所以用栈的结构判断,匹配上将栈元素删除,
2、最后栈空为合法func isValid( s string ) bool {
stack:=[]string{}
for _,c:=range s {
k:=string(c)
if len(stack)==0{
//至少保证栈里面有东西
stack=append(stack,k)
continue
}
if k=="(" || k=="{" || k=="["{
stack=append(stack,k)
continue
}
index:=len(stack)-1
// 匹配抵消
if k==")" && stack[index]=="(" {
stack = stack[:index]
} else if k=="}" && stack[index]=="{" {
stack = stack[:index]
} else if k=="]" && stack[index]=="[" {
stack = stack[:index]
} else {
// 不匹配添加
stack=append(stack,k)
}
}
// 栈空就是对称
if len(stack)==0 {
return true
}
return false
}
如果有帮助请点个赞哦, 更多文章请看我的博客
题主背景
- 从业8年——超级内卷500Q技术经理——目前专注go和微服务架构