1021. 删除最外层的括号
栈
1 出栈的唯一情况是当前元素是右括号 栈顶是左括号
2 其他情况一概入栈处理
3 当出栈后栈是空是 表明分割结束了
4 按照题意,需要去掉最外层的括号
package main
import (
"fmt"
"strings"
)
func removeOuterParentheses(S string) string {
if len(S)==0{
return ""
}
stack := []byte{S[0]}
start :=1
var res strings.Builder
for i:=1;i<len(S);i++{
if len(stack)>0&&S[i]==')'&&stack[len(stack)-1]=='(' {
stack = stack[:len(stack)-1]
if len(stack)==0{
res.WriteString(S[start:i])
start = i+2
}
}else {
stack = append(stack,S[i])
}
}
return res.String()
}
func main() {
fmt.Println(removeOuterParentheses("(()())(())"))
fmt.Println(removeOuterParentheses("(()())(())(()(()))"))
fmt.Println(removeOuterParentheses("()()"))
}