人生中刷的第五道算法题了
题目要求:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。
我的思路:我的思路没做出来,看了解题视频————先入后出,使用栈,后一个与栈顶匹配,配对则出栈,不配则进栈
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function (s) {
if (s.length % 2 !== 0) return false
let arr = []
const reg = new Map()
reg.set(")", "(")
reg.set("}", "{")
reg.set("]", "[")
for (let i = 0; i < s.length; i++) {
if (!reg.get(s[i])) {
arr.push(s[i])
continue
}
if (reg.get(s[i]) && reg.get(s[i]) !== arr[arr.length - 1]) {
arr.push(s[i])
} else {
arr.pop()
}
}
return arr.length === 0
};