写点什么

算法喜刷刷之 1021 删除最外层的括号

用户头像
Kylin
关注
发布于: 2021 年 03 月 18 日

题目



解题思路

首先先说一个思路,从左到右看字符串,起始值是 1,遇到左括号就加 1,遇到右括号就减 1。比如:

(()())(())(()(()))121210121012123210
复制代码

就会得到一个以数字标识的括号字符串。在这个过程中,如果遇到左括号大于 1 就取出,如果遇到右括号大于 0 就取出。取出的字符串就是目标串。


// golang环境中的代码执行思路package main
import ( "fmt")
func main() { s := "(()())(())(()(()))" sum := 0 result := "" len := len(s) for i := 0; i < len; i++ { if string(s[i]) == "(" { sum += 1 if sum > 1 { result += "(" } } else { sum -= 1 if sum > 0 { result += ")" } } }
fmt.Println(result )}
复制代码



// leetcode环境解题源码
func removeOuterParentheses(S string) string {sum := 0 result := "" len := len(S) for i := 0; i < len; i++ { if string(S[i]) == "(" { sum += 1 if sum > 1 { result += "(" } } else { sum -= 1 if sum > 0 { result += ")" } } } return result}
复制代码


其实这道题的标签是“栈”类题。下一版可以尝试用栈的思路去解决这道算法。另外如果需要 Java 实现版本的小伙伴也可以评论区留言,我会补上 Java 版本的解题源码。

用户头像

Kylin

关注

现实的理想主义者 2019.10.08 加入

【坐标】:魔都 【品种】:程序媛 【标签】:技术宅、大吃货 【追求】:改变世界、改变自己 【信条】:每次前进一小步

评论

发布
暂无评论
算法喜刷刷之1021删除最外层的括号