Skip to main content

1021. 删除最外层的括号

有效括号字符串为空 ""、"(" + A + ")"  或  A + B ,其中  A 和  B  都是有效的括号字符串,+  代表字符串的连接。

例如,"","()","(())()"  和  "(()(()))"  都是有效的括号字符串。

示例 1:

输入:s = "(()())(())"
输出:"()()()"
解释:
输入字符串为 "(()())(())",原语化分解得到 "(()())" + "(())",
删除每个部分中的最外层括号后得到 "()()" + "()" = "()()()"。

答案

将 S 的每一个元素逐个插入到堆栈里,如果碰到了( 就放进去,当(多于两个的时候,就拼到结果里,因为多余的那一个是要被删掉的所以不算。当堆栈里的值是满的,就将结果拼到 res 里。

var s = "(()())(())"
var removeOuterParentheses = function(S) {
let stack=[]
let res=""
for(let item of S){
if(item === "("){
stack.push(item)
// 有重复"("相邻:记录下来
if(stack.length >1){
res += item
}
}else if(item === ")"){
stack.pop()
if(stack.length != 0){
res += item
}
}
// console.log(res,stack)
}
return res
};

console.log(removeOuterParentheses(s))