更多好文vx golang技术实验室
检查全部括号是否匹配
leetcode20
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
解题思路
-
如果有一个右括号和前一个是不匹配的,就是不匹配 -
将左括号和右括号分开 -
左括号入栈,遇到右括号和栈顶的元素对比 -
防止全部左括号和全部右括号的情况
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oncgv8pi-1626087347619)(readme.assets/image-20210712183309383.png)]](https://img-blog.csdnimg.cn/2021071218571099.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5Nzg3MzY3,size_16,color_FFFFFF,t_70)
此时遇到第一个右括号和栈顶的元素对比,如果满足,消除栈顶的这个元素
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nQFhFRw4-1626087347621)(readme.assets/image-20210712183404336.png)]](https://img-blog.csdnimg.cn/20210712185656529.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5Nzg3MzY3,size_16,color_FFFFFF,t_70)
此时满足消除
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B8LcTwEE-1626087347622)(readme.assets/image-20210712183422408.png)]](https://img-blog.csdnimg.cn/20210712185640725.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5Nzg3MzY3,size_16,color_FFFFFF,t_70)
一次进行
- 在遍历中有右括号的时候,栈为空,就不满足
- 最后栈不是空的,也是有不匹配的
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7NT9xzaB-1626087347624)(readme.assets/image-20210712183538338.png)]](https://img-blog.csdnimg.cn/2021071218562532.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5Nzg3MzY3,size_16,color_FFFFFF,t_70)
代码
func isValid(s []byte) bool {
Mp := map[byte]byte{
')':'(',
'}':'{',
']':'[',
}
stack := []byte{}
for _ ,v := range s{
if v1,ok := Mp[v];!ok{
stack = append(stack,v)
}else {
if len(stack) <1 || v1 != stack[len(stack)-1]{
return false
}else{
stack = stack[0:len(stack)-1]
}
}
}
if len(stack) > 0{
return false
}
return true
}
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zHWtJULN-1626087347625)(readme.assets/image-20210712183704519.png)]](https://img-blog.csdnimg.cn/2021071218560646.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5Nzg3MzY3,size_16,color_FFFFFF,t_70)
更多好文vx golang技术实验室
|