关注
static StringBuilder s = new StringBuilder();
static void core(String nodes) {
// 叶子节点
if ("".equals(nodes)) {
return;
}
// 第一个是根节点
char root = nodes.charAt(0);
if (nodes.length() == 1) {
s.append(root);
return;
}
// 2(3,4(,5)) , 6(7,)
// 后面一个肯定是去除 一对()
nodes = nodes.substring(2,nodes.length() - 1);
// 找到左子树的范围
int cur = 1;
int find = -1;
if (nodes.charAt(0) == ',') {
// 提前结束左子树查找
cur = 0;
find = 0;
}else if(nodes.charAt(1) == ',') {
cur = 0;
find = 1;
}
if (find == -1) {
// 找到第一个 (
while (nodes.charAt(cur) != '(') {
cur++;
}
// 记录( - )
int leftSubRight = 1;
do {
cur++;
if (nodes.charAt(cur) == '(') {
leftSubRight++;
}else if(nodes.charAt(cur) == ')') {
leftSubRight--;
}
}while(leftSubRight != 0);
}
// [0-cur]为左子树范围
// 处理左子树
if (find != 0)
core(nodes.substring(0,Math.min(nodes.length(), cur + 1)));
// 根
s.append(root);
// 处理右子树
core(nodes.substring(find == 0 ? 1 : Math.min(nodes.length(), cur + 2),nodes.length()));
}
static String solution(String input) {
core(input);
return s.toString();
} 最后四分钟勉强凑出来
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
转发
点赞 评论 收藏
转发
牛客热帖
正在热议
# 牛客帮帮团来啦!有问必答 #
730274次浏览 11737人参与
# 非技术岗是怎么找实习的 #
74700次浏览 1398人参与
# 海康威视求职进展汇总 #
91624次浏览 1094人参与
# 浅聊一下我实习的辛苦费 #
81591次浏览 763人参与
# 如何写一份好简历 #
263207次浏览 3965人参与
# 硬件人求职现状 #
185087次浏览 2709人参与
# 通信硬件人笔面经互助 #
111880次浏览 2263人参与
# 面试等了一周没回复,还有戏吗 #
40620次浏览 500人参与
# 机械制造面试记录 #
37636次浏览 505人参与
# 24届营销人拿到了几个offer #
4247次浏览 62人参与
# 铜五铁六真的存在吗? #
28308次浏览 298人参与
# 实习生应该准时下班吗 #
76877次浏览 571人参与
# 打工人的辛酸 #
8617次浏览 134人参与
# 运营人的第一份offer应该如何选 #
35307次浏览 643人参与
# 美的求职进展汇总 #
39002次浏览 419人参与
# 如何看待offer收割机的行为 #
224156次浏览 3256人参与
# 产品实习,你更倾向大公司or小公司 #
36482次浏览 558人参与
# 数据人offer决赛圈怎么选 #
44818次浏览 727人参与
# 实习与准备秋招该如何平衡 #
171974次浏览 3113人参与
# 通信硬件薪资爆料 #
200903次浏览 1823人参与