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

facebook电面

全局:
Royal name..一样一样的。。
回复

使用道具 举报

全局:

所以。。。到底怎么比。。如果 abc12abc12   , 那数字是什么。。字母算什么?
回复

使用道具 举报

🔗
leixiang5 2016-9-26 05:48:27 | 只看该作者
全局:
freemail165 发表于 2016-3-28 04:18
这个知道更好,不知道的话写一下就一行的事

貌似如果是abc123 abc0009.貌似就fail掉了?
回复

使用道具 举报

🔗
liurudahai 2016-9-28 02:55:01 | 只看该作者
全局:
这题难道不是两个指针一起挪,边挪边比,如果都是字符串,直接比大小,相等继续,如果一个是字符串一个是数字,直接字符串胜,如果两个都是数字,同时遍历到数字的末尾,把整个数字取下来,对数字比大小,赢得胜,如果相等再继续重复上面的过程,如果到一个字符串已经完了还是相等,那么如果另一个字符串也同时遍历完的话就相等,不然另一个字符串胜
回复

使用道具 举报

🔗
zzhmxf 2016-10-24 11:45:26 | 只看该作者
全局:
liurudahai 发表于 2016-9-28 02:55
这题难道不是两个指针一起挪,边挪边比,如果都是字符串,直接比大小,相等继续,如果一个是字符串一个是数 ...

我也这么认为
回复

使用道具 举报

🔗
tonymuu 2016-10-24 12:18:30 | 只看该作者
全局:
数字确定是在string的末尾吗,还是有可能出现在中间?
回复

使用道具 举报

🔗
wanglele 2016-10-27 13:29:08 | 只看该作者
全局:
如果是abc1 和abc0001 哪个大?  一样大?   如果是abc1a 和abc0001b 哪个大?
回复

使用道具 举报

🔗
Ruby2333 2017-9-23 06:26:05 | 只看该作者
全局:

用long 代替int 来防止溢出
回复

使用道具 举报

🔗
flykite083 2018-1-7 08:20:41 | 只看该作者
全局:
“这题难道不是两个指针一起挪,边挪边比,如果都是字符串,直接比大小,相等继续,如果一个是字符串一个是数字,直接字符串胜,如果两个都是数字,同时遍历到数字的末尾,把整个数字取下来,对数字比大小,赢得胜,如果相等再继续重复上面的过程,如果到一个字符串已经完了还是相等,那么如果另一个字符串也同时遍历完的话就相等,不然另一个字符串胜” ----12a和123怎么破?貌似是个反例。
回复

使用道具 举报

🔗
潜水好贵 2018-9-28 03:49:30 | 只看该作者
全局:
写了下这个代码,如果思路清晰的话,代码倒是不难。

  1. static class NaturalComparator implements Comparator<String>{
  2.         public static void main(String args){
  3.                 NaturalComparator nc = new NaturalComparator();
  4.                 System.out.println(nc.compare("dd","vdas"));
  5.         }       
  6.         pubblic int compare(String l, String r){
  7.                 int lenL = l.length();
  8.                 int lenR = r.length();
  9.                 int iL = 0;
  10.                 int iR = 0;
  11.                 while (iL < lenL && iR < lenR){
  12.                         char cL = l.charAt(iL);
  13.                         char cR = r.charAt(iR);
  14.                         if (!Character.isDigit(cL) && !Character.isDigit(cR)){
  15.                                 if (cL != cR) return cL - cR;
  16.                                 iL ++;
  17.                                 iR ++;
  18.                                 continue;
  19.                         }
  20.                         if (!Character.isDigit(cL)){
  21.                                 return 1;
  22.                         }
  23.                         if (!Character.isDigit(cR)){
  24.                                 return -1;
  25.                         }

  26.                         int subL = iL;
  27.                         int subR = iR;
  28.                         while (iL < lenL && Character.isDigit(l.charAt(iL))){
  29.                                 iL ++;
  30.                         }

  31.                         while (iR < lenR && Character.isDigit(r.charAt(iR))){
  32.                                 iR ++;
  33.                         }
  34.                         long numL = Long.valueOf(l.substring(subL, iL));
  35.                         long numR = Long.valueOf(r.substring(subR, iR));

  36.                         if (numL > numR){
  37.                                 return 1;
  38.                         }
  39.                         if (numL < numR){
  40.                                 return -1;
  41.                         }
  42.                 }
  43.                 if (iL == lenL && iR == lenR){
  44.                         return 0;
  45.                 }
  46.                 if (iL == lenL){
  47.                         return -1;
  48.                 }else{
  49.                         return 1;
  50.                 }
  51.         }
  52. }
复制代码
回复

使用道具 举报

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

本版积分规则

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