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

水果siri domain一面

全局:

2018(7-9月) 码农类General 硕士 全职@apple - 内推 - 技术电面  | | Other | 在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
您好!
本帖隐藏的内容需要积分高于 200 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 200 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies


评分

参与人数 1大米 +3 收起 理由
cs2009 + 3 给你点个赞!

查看全部评分


上一篇:实习新鲜面经
下一篇:七月九日最近狗家实习OA
推荐
619899442 2018-7-13 15:56:56 | 只看该作者
全局:
用StringBuilder实现了recursive和非recursive两种版本,欢迎讨论

  1. import java.util.*;
  2. import java.util.stream.*;

  3. class Formatter {

  4.     private static boolean keyStart(int next, char[] str) {
  5.         return next + 2 < str.length && str[next] == '{' && Character.isDigit(str[next + 1]);
  6.     }

  7.     public static String format(String pattern, String ... argu) {
  8.         StringBuilder sb = new StringBuilder();
  9.         List<String> args = Stream.of(argu).collect(Collectors.toList());
  10.         int next = 0;
  11.         char[] str = pattern.toCharArray();


  12.         // invariant: sb contains formatted str[0:next]
  13.         while (next < str.length) {
  14.             if (!keyStart(next, str)) {
  15.                 sb.append(str[next++]);
  16.                 continue;
  17.             }
  18.             // str[next] == '{'
  19.             int numStart = ++next;
  20.             while (next < str.length && str[next] != '}') {
  21.                 ++next;
  22.             }
  23.             if (next == str.length) {
  24.                 // reach the pattern end without enclosing '}'
  25.                 sb.append(pattern.substring(numStart - 1, next));
  26.                 continue;
  27.             }
  28.             // str[next] == '}'
  29.             try {
  30.                 int key = Integer.parseInt(pattern.substring(numStart, next));
  31.                 String value = args.get(key);
  32.                 sb.append(value);
  33.                 ++next; // jump out '}'
  34.             } catch (Exception e) {
  35.                 sb.append(pattern.substring(numStart - 1, next));
  36.             }
  37.         }
  38.         return sb.toString();
  39.     }

  40.     // keep formatting until reaching a fixed point
  41.     public static String recursiveFormat(String pattern, String ... argu) {
  42.         String formatted = Formatter.format(pattern, argu);
  43.         if (formatted.equals(pattern)) {
  44.             return pattern;
  45.         }
  46.         return recursiveFormat(formatted, argu);
  47.     }
  48. }

  49. class Test {
  50.     public static void main(String[] args) {

  51.         System.out.println(Formatter.format(
  52.         "so{0} thi{1} just {2}like {3} this",
  53.         "me", "ng", "", "♂")); // some thing just like ♂this
  54.         System.out.println(Formatter.format("a{0}{0}", "s"));
  55.         System.out.println(Formatter.format("a{0}{0}", "s"));
  56.         System.out.println(Formatter.recursiveFormat("a{{0}{0}}", "0")); // a{{0}{0}} -> a{0} -> a0
  57.         //Formatter.format("a{0}", "s");
  58.     }
  59. }
复制代码
回复

使用道具 举报

推荐
 楼主| leoloe326 2018-7-13 11:16:43 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

推荐
 楼主| leoloe326 2018-7-13 23:58:15 | 只看该作者
全局:
619899442 发表于 2018-7-13 15:56
用StringBuilder实现了recursive和非recursive两种版本,欢迎讨论

[mw_shl_code=java,true]import java. ...

我用的状态机做的,面试时候时间有限。
回复

使用道具 举报

🔗
JamesJi 2018-7-13 06:40:59 | 只看该作者
全局:
请问下楼主是怎么拿到面试的
回复

使用道具 举报

无效楼层,该帖已经被删除
无效楼层,该帖已经被删除
🔗
 楼主| leoloe326 2018-7-13 11:17:41 | 只看该作者
全局:
JamesJi 发表于 2018-7-13 06:40
请问下楼主是怎么拿到面试的

LI上找的HR
回复

使用道具 举报

🔗
attaboyheart 2018-7-13 12:00:28 | 只看该作者
全局:
leoloe326 发表于 2018-7-13 11:17
重新回复在下面了

多谢 楼主拿到onsite了吗
回复

使用道具 举报

🔗
 楼主| leoloe326 2018-7-13 12:11:09 | 只看该作者
全局:
attaboyheart 发表于 2018-7-13 12:00
多谢 楼主拿到onsite了吗

还没消息
回复

使用道具 举报

🔗
619899442 2018-7-13 14:28:28 | 只看该作者
全局:
请问这种edge case怎么处理呢: format("Hello ${${0}}", World),输出是 Hello World 还是 Hello ${World}
回复

使用道具 举报

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

本版积分规则

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