给定一个只包括 '(',')','{','}','[',']'
的字符串 s ,判断字符串是否有效。
有效字符串需满足:
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([)]"
输出:false
示例 5:
输入:s = "{[]}"
输出:true
提示:
1 <= s.length <= 104
s 仅由括号 '()[]{}' 组成
题目链接:https://leetcode.cn/problems/valid-parentheses
数据结构:栈
将字符串中的符号依次入栈,若当前栈顶符号和待入栈符号配对,则栈顶出栈。
若不匹配,则入栈。
最终若栈为空,则匹配成功。不为空则匹配失败。
注意:
'('
和 ')'
的 int 值分别为 40 和 41 。'[',']'
分别为 91 和 93 。'{','}'
分别为 123 和 125 。func isValid(s string) bool {
sli := []rune(s)
l := len(sli)
if l <= 1 {
return false
}
stack := make([]rune, l)
stack[0] = sli[0]
//栈顶
top := 0
if stack[top] == 41 || stack[top] == 93 || stack[top] == 125 {
return false
}
for i:=1; i<l ;i++{
if top == -1{
top++
stack[top] = sli[i]
continue
}
switch stack[top] {
case 40:
if sli[i] != 41 {
top++
stack[top] = sli[i]
}else{
top--
}
case 91:
if sli[i] != 93 {
top++
stack[top] = sli[i]
}else{
top--
}
case 123:
if sli[i] != 125 {
top++
stack[top] = sli[i]
}else{
top--
}
}
}
if top == -1{
return true
}else{
return false
}
}
评判结果: