小米前端第二题

有朋友会嘛
字符串转二叉树中序遍历
求解🤐🤐#小米##笔试题目##前端工程师#
全部评论
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();     } 最后四分钟勉强凑出来
点赞
送花
回复
分享
发布于 2019-09-06 20:41

相关推荐

点赞 8 评论
分享
牛客网
牛客企业服务