楼主: pinkdatura
跳转到指定楼层
上一主题 下一主题
收起左侧

脸家店面

🔗
处川 2016-9-23 02:39:16 | 只看该作者
全局:
stephaniede 发表于 2016-8-24 06:26
pat pat LZ 给你加点米。还有其他的好公司的!

补充内容 (2016-8-23 15:38):

求问什么叫不用stringbuilder 反复叠加当前字符,没听懂啊,谢谢啊
回复

使用道具 举报

🔗
stephaniede 2016-9-23 02:42:56 | 只看该作者
全局:
处川 发表于 2016-9-22 11:39
求问什么叫不用stringbuilder 反复叠加当前字符,没听懂啊,谢谢啊

我的意思是可以用StringBuilder, 直接用String + String的方法更方便不是么,Stringbuilder都要loop啊
回复

使用道具 举报

🔗
liurudahai 2016-9-28 11:45:17 | 只看该作者
全局:
你这个输入不是已经是KEY VALUE PAIR了么,没看懂输入输出的区别
回复

使用道具 举报

🔗
knight0clk 2016-11-8 21:41:57 | 只看该作者
全局:
楼主,感觉这个题用stack存储括号,然后进而控制缩紧比较简单一些吧?然后处理一个打印一行,这样一行一行的来
回复

使用道具 举报

🔗
 楼主| pinkdatura 2016-11-10 04:03:13 | 只看该作者
全局:
knight0clk 发表于 2016-11-8 21:41
楼主,感觉这个题用stack存储括号,然后进而控制缩紧比较简单一些吧?然后处理一个打印一行,这样一行一行 ...

有两种括号,你说的哪种?
回复

使用道具 举报

🔗
knight0clk 2016-11-10 09:30:19 | 只看该作者
全局:
pinkdatura 发表于 2016-11-10 04:03
有两种括号,你说的哪种?

两种括号都存储,参加匹配
回复

使用道具 举报

无效楼层,该帖已经被删除
🔗
yuranrobin 2016-11-29 14:31:11 | 只看该作者
全局:
自己写了一个DFS的

  1. public static String parseJson(String str) {
  2.                 int[] pos = new int[1];
  3.                 return parseJson(str, pos, "\n", "");
  4.         }
  5.        
  6.         private static String parseJson(String str, int[] pos, String newLine, String indent) {
  7.                 StringBuilder sb = new StringBuilder();
  8.                 sb.append(indent);
  9.                 int i = pos[0];
  10.                
  11.                 while (i < str.length()) {
  12.                         if (str.charAt(i) == ' ') {
  13.                                 i++;
  14.                         } else {
  15.                                 char c = str.charAt(i);
  16.                                 if (c == '{' || c == '[') {
  17.                                         pos[0] = i + 1;
  18.                                         sb.append((c == '{' ? '{' : '[') + newLine + parseJson(str, pos, newLine, indent + "  ") + newLine + indent +  (c == '{' ? '}' : ']'));
  19.                                         i = pos[0] + 1;
  20.                                 } else if (c == '}' || c == ']') {
  21.                                         pos[0] = i;
  22.                                         return sb.toString();
  23.                                 } else if (c == ',') {
  24.                                         sb.append(c + newLine + indent);
  25.                                         i++;
  26.                                 } else {
  27.                                         sb.append(c);
  28.                                         i++;
  29.                                 }
  30.                         }
  31.                 }
  32.                 pos[0] = i;
  33.                 return sb.toString();
  34.         }
复制代码
回复

使用道具 举报

🔗
dexter 2016-11-29 14:40:22 | 只看该作者
全局:
yuranrobin 发表于 2016-11-29 14:31
自己写了一个DFS的

楼上好厉害~
回复

使用道具 举报

全局:
楼主看这样行不

  1.     public static String pretty(String s) {
  2.         StringBuilder sb = new StringBuilder();
  3.         int indent = 0;
  4.         char pre = 0;
  5.         for (char c : s.toCharArray()) {
  6.             if (Character.isWhitespace(c)) continue;
  7.             if (c == ']' || c == '}') indent--;
  8.             if (pre == '[' || pre == '{' || pre == ',' || c == ']' || c == '}') {
  9.                 sb.append('\n');
  10.                 for (int i = 0; i < indent; i++) sb.append("  ");
  11.             }      
  12.             sb.append(c);
  13.             if (c == '[' || c == '{') indent++;
  14.             pre = c;
  15.         }      
  16.         return sb.toString();
  17.     }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表