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

Microsoft on-campus interview30分钟

🔗
xiaozhuxiaozhu 2016-10-17 06:43:48 | 只看该作者
全局:
609064231 发表于 2016-10-17 05:58
你这只考虑了counter是个位数啊
counter大于等于10呢

你自己不能加几行代码?
  1. public class microsoft_practice_string_compression {
  2.        
  3.        
  4.         public static void compression(char[] ch)
  5.         {
  6.                 int counter =1;
  7.                 int j =0;

  8.                 for(int i =0;i < ch.length;i++)
  9.                 {
  10.                                 while((i+1<ch.length) && ch[i]==ch[i+1])
  11.                                 {
  12.                                         counter++;
  13.                                         i++;
  14.                                 }
  15.                                 ch[j++] = ch[i];
  16.                                 if(counter<10)
  17.                                 {
  18.                                         ch[j++] = (char) (counter+'0');

  19.                                 }
  20.                                 else
  21.                                 {
  22.                                         int temp =0;
  23.                                         int start = j;
  24.                                         while(counter>0)
  25.                                         {
  26.                                                 temp = counter%10;
  27.                                                 ch[j++] =(char) (temp+'0');
  28.                                                 counter= counter/10;
  29.                                         }
  30.                                         int end = j-1;
  31.                                         while(start < end)
  32.                                         {
  33.                                                 char tempChar = ch[start];
  34.                                                 ch[start] = ch[end];
  35.                                                 ch[end] = tempChar;
  36.                                                 start++;
  37.                                                 end--;
  38.                                         }
  39.                                 }
  40.                                 counter=1;

  41.                 }
  42.                 while(j!=ch.length)
  43.                 {
  44.                         ch[j++] ='\0';
  45.                 }
  46.                 for(char c: ch)
  47.                 {
  48.                         System.out.println(c);
  49.                 }
  50.         }
  51.         public static void main(String[] args)
  52.         {
  53.                 String str = "aaabbbccc";
  54.                 char [] test = str.toCharArray();
  55.                 String str1 = "aaaaab";
  56.                 char[] test1 = str1.toCharArray();
  57.                 String str2 = "aaaaba";
  58.                 char[] test2 = str2.toCharArray();
  59.                 String str3 = "aa";
  60.                 char[] test3 = str3.toCharArray();
  61.                 String str4 = "aabb";
  62.                 char[] test4 = str4.toCharArray();
  63.                 String str5 = "aaaaaabbbbbbbbbbbbbbbbbbbbbcccccccccccccc";
  64.                 char[] test5 = str5.toCharArray();
  65.                 String str6 = "hhhhhhhhhhhhhhhh";
  66.                 char[] test6 = str6.toCharArray();
  67.                 System.out.println("test");
  68.                 compression(test);
  69.                 System.out.println("test1");
  70.                 compression(test1);
  71.                 System.out.println("test2");
  72.                 compression(test2);
  73.                 System.out.println("test3");
  74.                 compression(test3);
  75.                 System.out.println("test4");
  76.                 compression(test4);
  77.                 System.out.println("test5");
  78.                 compression(test5);
  79.                 System.out.println("test6");
  80.                 compression(test6);
  81.         }
  82. }
复制代码
回复

使用道具 举报

🔗
skinnyman 2016-10-17 14:28:46 | 只看该作者
全局:
xiaozhuxiaozhu 发表于 2016-10-17 06:43
你自己不能加几行代码?

请教下如果考虑输入为 abbb, abcccccc这样的话,该怎么处理呢?
回复

使用道具 举报

🔗
xiaozhuxiaozhu 2016-10-17 15:15:40 | 只看该作者
全局:
skinnyman 发表于 2016-10-17 14:28
请教下如果考虑输入为 abbb, abcccccc这样的话,该怎么处理呢?

这种算是invalid的input吧?
回复

使用道具 举报

🔗
小飞侠 2016-10-18 05:11:18 | 只看该作者
全局:
xiaozhuxiaozhu 发表于 2016-10-17 15:15
这种算是invalid的input吧?

这两个都是valid input,只要输出不超过输入就是valid,如果是abbb,返回a1b3,如果是abcccccc,返回a1b1c6,都是valid的,你有O(n)的in place吗?
回复

使用道具 举报

🔗
skinnyman 2016-10-18 12:30:53 | 只看该作者
全局:
abbb 和 abccccc, abcdddddddd 这些情况,因为写入count的时候会覆盖掉后面的字母,我没有想出in-place的办法来。大家有什么想法么?
回复

使用道具 举报

🔗
say543 2016-10-18 13:22:23 | 只看该作者
全局:
skinnyman 发表于 2016-10-18 12:30
abbb 和 abccccc, abcdddddddd 这些情况,因为写入count的时候会覆盖掉后面的字母,我没有想出in-place的办 ...

同问 觉得不能in place 这就是一个case..
回复

使用道具 举报

🔗
 楼主| graininear 2016-10-18 13:33:25 | 只看该作者
全局:
skinnyman 发表于 2016-10-18 12:30
abbb 和 abccccc, abcdddddddd 这些情况,因为写入count的时候会覆盖掉后面的字母,我没有想出in-place的办 ...

哎,反正我是不太会写,网上也没找到好solution。。
回复

使用道具 举报

🔗
zjhsyfz 2016-10-18 14:09:22 | 只看该作者
全局:
这个也忒麻烦吧。我的想法是单个数的出现导致坑爹的事情发生,如开头是abcdefg的情况,用几个变量记录,如a处,能提供1位,需要2位,并记录起始位置;b处,能提供2位,需要4位。。。到能够满足的地方,也就是提供位数终于大于需要位数时,倒着数回来。正常情况也是倒着数回来。而且尾数又出现单个就不必担心,中间肯定能补上。明天我试着写写看,欢迎交流
回复

使用道具 举报

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

使用道具 举报

🔗
say543 2016-10-19 04:54:08 | 只看该作者
全局:
zjhsyfz 发表于 2016-10-18 14:09
这个也忒麻烦吧。我的想法是单个数的出现导致坑爹的事情发生,如开头是abcdefg的情况,用几个变量记录,如a ...

做等大神上代码~~
回复

使用道具 举报

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

本版积分规则

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