有一个字符串我们需要找到左右括号相对应的下标
let str = ' (5+6)+((2+1)-(4* (2-1)))';
let show = (s) = > {
const leftArr = []; // 存放左边括号
const successArr = []; // 存放成功数据
/*遍历字符串*/
for(let i=0; i<s.length; i++) {
if(s[i]=='(') {
leftArr.push(i)
}else if(s[i] == ')') {
if(leftArr.length ==0) {
throw new Error(`位置在${i}的)没有相匹配的`)
}
successArr.push({
str: s,
'左括号下标': leftArr.pop(),
'右括号下标': i
})
}
}
// 检查leftArr的长度是否为0
if(leftArr.length!== 0) {
let i = leftArr[0];
throw new Error(`位置在${i}的(没有相匹配的`)
}
return successArr
}
console.log(show(str))
有问题可以私信我。