20. 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号
思路
利用栈后进先出的策略来解题,判断这个字符和上一个字符是否构成一对,如果是就都出栈, 最后判断栈长是否为0
Code
func isValid(s string) bool {
stack := []int32{}
mp := map[int32]int32{
'{': '}',
'(': ')',
'[': ']',
}
for _, v := range s {
if v == '{' || v == '[' || v == '(' {
stack = append(stack, v)
} else {
if len(stack) == 0 {
return false
}
k := stack[len(stack)-1]
if mp[k] == v {
stack = stack[:len(stack)-1]
} else {
return false
}
}
}
if len(stack) == 0 {
return true
}
return false
}