依次输出括号内的全部表达式

456 阅读1分钟

依次输出括号内的全部表达式: 

 例 1:(1+1)*2 输出:1+1 例 2:((1+2)*(3+4))+2 输出: (1+2)*(3+4) 1+2 3+4 例3:())或(() 输出: 抛出Exception

function findStr(str){
    let res = []
  let stack = []
  for(let i=0;i<str.length;i++){
      if(str[i]==='('){
          stack.push(i)
      } else if (str[i] === ')') {
          res.push(str.substring(stack[stack.length-1]+1,i))
          stack.length ? stack.pop()
      }
  } 
    console.log(res)
    if(stack.length){
        throw new Error('exception')
    }
}
findStr('(1+1)*2')
findStr('((1+2)*(3+4))+2')
// findStr('(()')
findStr('())')