思路:
本题要求判断字符串的括号是否成对出现
首先想到游戏消消乐,每次出现右括号就判断是否有对应的左括号并消除
这样最后为空就说明括号成对出现,栈可以用作消消乐的容器
代码:
首先创建栈,栈的长度是否为0直接和结果相关
然后遍历字符串,并创建左右括号的映射
如果当前字符为右括号并和栈尾字符匹配,则移除栈尾字符
其余情况都将当前字符入栈
var isValid = function (s) {
let stack = []
let mapping = {')': '(', ']': '[', '}': '{'}
for (const c of s) {
if (!mapping[c] || stack.length === 0) {
stack.push(c)
} else if (mapping[c] === stack[stack.length - 1]) {
stack.pop()
} else {
stack.push(c)
}
}
return !stack.length
};