gpt4 book ai didi

javascript - 如何检查字符串中左括号和右括号的顺序?

转载 作者:行者123 更新时间:2023-11-28 14:26:52 24 4
gpt4 key购买 nike

需要找到左括号和右括号,如果违反左括号和右括号的顺序,则返回 false。

但是,如果不恢复右数组与左数组进行比较,我不会在此处添加检查括号{[(3+1)+2]+}。如果像现在这样反向,那么我无法在此处检查 [1+1]+(2*2)-{3/3}

function brackets(expression){
let leftArr=[];
let rightArr = [];
for(let i=0; i<expression.length; i++){
if(expression[i] === '(' || expression[i] === '[' || expression[i] === "{"){
leftArr.push(expression[i]);
}


if(expression[i] === ')'){

rightArr.push("(");
}else if(expression[i] === '}'){

rightArr.push("{");
} else if(expression[i] === ']'){

rightArr.push("[");
}
}

rightArr.reverse();

if(leftArr.length<rightArr.length || leftArr.length>rightArr.length){
return false;
}

for(let k=0; k<leftArr.length; k++) {
if(leftArr[k] != rightArr[k]){
return false;
}
}

return true;
}



console.log(brackets('(3+{1-1)}')); // false
console.log(brackets('{[(3+1)+2]+}')); //true
console.log(brackets('[1+1]+(2*2)-{3/3}')); //true
console.log(brackets('(({[(((1)-2)+3)-3]/3}-3)')); //false

最佳答案

在尽可能短的时间内,对可能令您感到困惑的行进行注释。

function check(expr){
const holder = []
const openBrackets = ['(','{','[']
const closedBrackets = [')','}',']']
for (let letter of expr) { // loop trought all letters of expr
if(openBrackets.includes(letter)){ // if its oppening bracket
holder.push(letter)
}else if(closedBrackets.includes(letter)){ // if its closing
const openPair = openBrackets[closedBrackets.indexOf(letter)] // find its pair
if(holder[holder.length - 1] === openPair){ // check if that pair is the last element in the array
holder.splice(-1,1) // if so, remove it
}else{ // if its not
holder.push(letter)
break // exit loop
}
}
}
return (holder.length === 0) // return true if length is 0, otherwise false
}
check('[[{asd}]]') /// true

关于javascript - 如何检查字符串中左括号和右括号的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52969755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com