括号成对匹配
题目
括号成对匹配。例如:'[a{b©d}e]'匹配成功,'a(b}'匹配不成功
思路
这题的考察点是栈的原理,可以把括号匹配看成入栈和出栈,如果是左边的括号一律入栈;如果是右括号需要先与对应的左括号进行对比,匹配成功则出栈。最后入栈出栈完成判断栈中长度为0即为匹配成功。
代码
function isMacth(l: string,r: string):boolean{if(left === '{' && right === '}') return trueif(left === '[' && right === ']') return trueif(left === '(' && right === ')') return truereturn false
}
function matchBracket(str: string):boolean {const len = str.lengthif(len === 0) return trueconst stack = []const leftStr = '[{('const rightStr = ')}]'for(let i=0; i<len; i++){const s = str[i]if(leftStr.includes(s)){ //左括号入栈stack.push(s)}else if(rightStr.includes(s)){ //右括号,判断,出栈const top = stack[stack.length - 1]if(isMatch(top, s)) {stack.pop()}}}return stack.length === 0
}