February 19, 2020
https://leetcode-cn.com/problems/valid-parentheses/
使用语言:Go
func isValid(s string) bool {
bracketMap := map[string]string{
"(": ")",
"[": "]",
"{": "}",
}
var stack []string
for _, c := range s {
cs := string(c)
if cs == "(" || cs == "[" || cs == "{" {
stack = append(stack, bracketMap[cs])
} else {
if len(stack) == 0 {
return false
}
popCS := stack[len(stack) - 1]
if popCS != cs {
return false
}
stack = stack[:len(stack) - 1]
}
}
return len(stack) == 0
}
这道题目考察的是对数据结构 —— 栈 的使用。对于括号的匹配,实际上就是一个后进先出的栈。先进去的左括号,需要后匹配右括号,因此我直接用数组来构造了一个栈。栈中直接存放要匹配的右括号。遍历字符串 s,当遇到左括号时,入栈对应的右括号,当遇到右括号时,进行出栈操作,并检查出栈的符号是否与该右括号匹配,匹配则继续,不匹配直接返回 false
痕迹
没有过去,就没法认定现在的自己