Open super-fool opened 3 years ago
判断字符串括号是否合法 【题目】字符串中只有字符'('和')'。合法字符串需要括号可以配对。比如: 输入:"()" 输出:true 解释:(),()(),(())是合法的。)(,()(,(()是非法的。 请你实现一个函数,来判断给定的字符串是否合法。
function test(str) {
let l = str.length
, rightStack = [];
if (l % 2 !== 0) {
throw new Error('奇数字符无法匹配!')
}
for (let i of str) {
if (i === '(') {
rightStack.push(i)
continue;
}
//直接跳过下面的执行, 直接下次循环
if (i === ')') {
if (rightStack.length < 0) {
throw new Error('匹配失败')
}
rightStack.pop();
}
return !rightStack.length;
}
}
test('()(())')
又称堆栈, 是一种运算受限的线性表, 受限的原因: 只允许一端插入和推出, 这一端称为栈顶, 另一端称为栈底.
模拟栈: