给定一个只包括 '('
,')'
,'{'
,'}'
,'[',']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
示例 1:
输入:s = "()" 输出:true
示例 2:
输入:s = "()[]{}" 输出:true
示例 3:
输入:s = "(]" 输出:false
示例 4:
输入:s = "([)]" 输出:false
示例 5:
输入:s = "{[]}" 输出:true
提示:
'()[]{}'
组成思路:新建一个栈,遇到左括号就入栈,遇到与之相同的就出栈直到最后判断栈是否为空
javascript/**
* @param {string} s
* @return {boolean}
*/
var isValid = function (s) {
const l = s.length;
if (l % 2 === 1) return false;
const stack = [];
for (let i = 0; i < l; i++) {
const c = s[i];
if (["(", "[", "{"].includes(c)) {
stack.push(s[i]);
} else if (c === ")") {
if (stack.pop() !== "(") return false;
} else if (c === "]") {
if (stack.pop() !== "[") return false;
} else if (c === "}") {
if (stack.pop() !== "{") return false;
}
}
return stack.length === 0;
};
复杂度分析:
javascriptvar isValid = function (s) {
const l = s.length;
if (l % 2 === 1) return false;
const stack = [];
const map = new Map();
map.set("(", ")");
map.set("[", "]");
map.set("{", "}");
for (let i = 0; i < l; i++) {
if (map.has(s[i])) stack.push(s[i]);
else if (!map.has(s[i]) && s[i] !== map.get(stack.pop())) return false;
}
return stack.length === 0;
};
本文作者:叶继伟
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!