全部评论
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();
} 最后四分钟勉强凑出来
相关推荐
12-17 10:20
河北工业大学 Java 点赞 评论 收藏
分享
10-30 16:31
重庆大学 Java 点赞 评论 收藏
分享
10-30 18:20
第一拖拉机制造厂拖拉机学院 C++
牛客41406533...:回答他在课上学,一辈子待在学校的老教授用三十年前的祖传PPT一字一句的讲解,使用谭浩强红皮书作为教材在devc++里面敲出a+++++a的瞬间爆出114514个编译错误来学 点赞 评论 收藏
分享

腾讯云智研发成长空间 5050人发布