算法
Balanced Brackets
判断一段字符串里的括号是否成对、顺序是否正确
算法步骤
- 新建一个空栈。
- 遍历字符:
- 若是左括号,压栈。
- 若是右括号:
- 栈为空则直接失败。
- 弹出栈顶,判断是否与当前右括号匹配。
- 遍历完字符串后:
- 栈为空表示全部匹配;
- 栈非空表示有未匹配的左括号。
时间复杂度:
空间复杂度:
混合匹配如 ([)] 应判定为 false,而不是忽略顺序。
参考代码
function isBalanced(s: string): boolean {
const stack: string[] = [];
const pairs: Record<string, string> = {
')': '(',
']': '[',
'}': '{'
};
for (const ch of s) {
if (ch === '(' || ch === '[' || ch === '{') {
stack.push(ch);
} else if (ch in pairs) {
if (stack.pop() !== pairs[ch]) return false;
}
}
return stack.length === 0;
}在 GitHub 上编辑
上次更新于