有效的括号
时间复杂度: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;
};
有效括号匹配:算法与空间复杂度解析

本文探讨了如何利用栈数据结构实现字符串中有效括号的匹配,并介绍了算法的时间复杂度为O(n)和空间复杂度为O(n+6)。通过实例讲解了如何使用Map和栈来检查输入字符串的括号是否正确配对。
282

被折叠的 条评论
为什么被折叠?



