LeetCode20. 有效的括号Golang版
1. 问题描述
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
2. 思路
利用栈的思想解决,匹配到左括号入栈,匹配到右括号出站
3. 代码
func isValid(s string) bool {
if len(s) == 0 {
return true
}
if len(s) % 2 != 0 {
return false
}
var temp []byte
for i := 0; i < len(s); i++ {
if s[i] == '(' || s[i] == '[' || s[i] == '{' {
temp = append(temp,s[i])
} else {
if len(temp) == 0 {
return false
}
if s[i] == ')' && temp[len(temp)-1] != '(' {
return false
}
if s[i] == ']' && temp[len(temp)-1] != '[' {
return false
}
if s[i] == '}' && temp[len(temp)-1] != '{' {
return false
} else {
temp = temp[:len(temp)-1]
}
}
}
if len(temp) == 0 {
return true
} else {
return false
}
}