删除最外层的括号

127 阅读1分钟

解题思路

我们需要从字符串中找到哪些是有效的括号 ,哪些是无效的括号!那么想到的就是采用标记法来做 记录 左括号为 1 右边括号为 0 的就是我们不需要的


// (()())(())(()(())) 原始字符串,按照题意分隔一下,然后把上面的输出结果+到下面对应的位置
// ( ()() ) ( () ) ( ()(()) )
// 1 2121 0 1 21 0 1 212321 0
// *      * *    * *        *

图示当中 带*号的就是我们所不需要的括号,(1 左括号 )0右括号


function remover(s) { 
    let lev = 0
    let res = ''
    for(let i = 0; i < s.length; i++) { 
        // 当识别到为左括号时,lev++ ,并且判断当1的情况
           if(s.charAt(i)) {
               if(lev === 1) {
                   continue;
               }
               lev ++
           }
           else {
               if(lev === 0) {
                   continue;
               }
               lev --
           }
           res += s.charAt(i)
    }
    return res
    
}