20. 有效的括号 简单
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([)]"
输出:false
示例 5:
输入:s = "{[]}"
输出:true
提示:
- 1 <= s.length <= 104
- s 仅由括号 ‘()[]{}’ 组成
代码参考:
package main
import "fmt"
func main() {
fmt.Println(isValid("["))
fmt.Println(isValid("([)]"))
}
// 类似后缀表达式的匹配过程
func isValid(s string) bool {
var runes []rune
for _, r := range s {
switch r {
case '(', '[', '{':
runes = append(runes, r)
case ')', ']', '}':
if len(runes) > 0 && opposite(r) == runes[len(runes)-1] {
runes = runes[:len(runes)-1]
} else {
return false
}
}
}
if len(runes) > 0 {
return false
}
return true
}
func opposite(r rune) rune {
switch r {
case ')':
return '('
case ']':
return '['
case '}':
return '{'
}
return '\n'
}
最后编辑: kuteng 文档更新时间: 2021-06-05 10:16 作者:kuteng