共计 442 个字符,预计需要花费 2 分钟才能阅读完成。
无效的括号
工夫复杂度:O(n),其中 n 是字符串 s 的长度。
空间复杂度:O(n+∣Σ∣),其中 Σ 示意字符集,本题中字符串只蕴含 6 种括号,∣Σ∣=6。栈中的字符数量为 O(n),而哈希表应用的空间为 O(∣Σ∣),相加即可失去总空间复杂度。
- 由题意晓得匹配括号的流程合乎“栈”这种数据结构
- 顺次将左括号放入栈
- 匹配到右括号则出栈
-
遍历完结判断栈是否为空
var isValid = function (s) { const n = s.length; if (n % 2 === 1) {return false;} const pairs = new Map([[')', '('], [']', '['], ['}', '{'] ]); const stk = []; for (let ch of s) {if (pairs.has(ch)) {if (!stk.length || stk[stk.length - 1] !== pairs.get(ch)) {return false;} stk.pop();} else {stk.push(ch); } }; return !stk.length; };
正文完