将{(【这三个符号存入栈,那么当字符中出现 } )】符号时,栈顶元素必然与之对应。
见代码:
//利用栈的特性对括号进行是否闭合的检查
let kuoHao={
'}':'{',
')':'(',
']':'['
}
function legitimacy(str){
let arr=[];//作为栈存储左括号
let str1=str.split('');
for(let k of str1){
if(k=='['||k=='{'||k=='('){
arr.push(k);}
if(k==']'||k=='}'||k==')'){//当出现右括号时,判断栈顶元素是否与之对应,并出栈。
let compete=arr.pop();
if(compete!=kuoHao[k]){
console.log('err');
return false;
}
}
}
if(arr[0]!=undefined){//判断栈是否清空,不进行此步,出现‘()(’情况时会错误判断。
return false;
}
return true;
}
console.log(legitimacy('{([ddd])}'));
最后判断栈是否清空。