【通知】7月22,工业界资深数据科学家教你破解各大公司面试!


一亩三分地论坛

 找回密码
 获取更多干活,快来注册

一亩三分地官方iOS手机应用下载
查看: 12470|回复: 54
收起左侧

你们要的Twitter OA (含Java代码)

  [复制链接] |试试Instant~ |关注本帖
duziyuanyang 发表于 2016-10-31 04:32:10 | 显示全部楼层 |阅读模式

2016(10-12月) 码农类 硕士 全职@Twitter - 网上海投 - 在线笔试 |Otherfresh grad应届毕业生

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

您需要 登录 才可以下载或查看,没有帐号?获取更多干活,快来注册

x
这一周都在准备Twitter的OA,感谢地里各种好人的无私贡献,基本把最近的题都做了下,自己抽到的是3题版,time series aggregation那题不论是用treemap还是priorityQueue都只能过第1个test case,后面4个死活过不去,在一楼贴上代码,如果有好心人帮忙看下,提点建议最好了。. visit 1point3acres.com for more.
另外发现这周末收到的oa比上周的题目要简单好多,所以小伙伴抓紧做吧,指不定下周题又变了。。

. from: 1point3acres.com/bbs
我把自己做过的题的代码直接贴出来吧,反正之前组招面过twitter了,感觉即使再给我电面还是过不去(它家店面至少是lc68,269的难度,一题不够),不求大米不求赞,只为下周的Google电面攒个人品,希望能出个简单的或者是原题,不要遇到奇葩题...


补充内容 (2016-11-15 04:19):
今天听说有人因为贴了oa代码被取消onsite的(后人直接全部 copy了他的代码),我开这个帖子只是希望国人能过互帮互助,毕竟从地里收益很多。但是希望大家不要照抄code,这样于你于我都不是件好事,拜托了

补充内容 (2016-11-15 04:20):
据说hackerrank的后台检测代码查重机制很准,不光是twitter,今后大家做其它家的hackerrank OA也要注意,祝好运!

评分

18

查看全部评分

 楼主| duziyuanyang 发表于 2016-10-31 04:36:39 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
parent, child, tree那题,选Oracle, pass all test case
  1. SELECT
  2.     Id,
  3.     CASE
  4.         WHEN M IS NULL THEN 'Leaf'
  5.         WHEN P_id IS NULL THEN 'Root'. 1point 3acres 璁哄潧
  6.         ELSE 'Inner'
  7.     END AS TypeNode
  8. FROM(
  9.     SELECT
  10.         DISTINCT hijo.*, padre.P_id as M
  11.     FROM Tree hijo
  12.     LEFT JOIN Tree padre ON(hijo.Id = padre.P_id)-google 1point3acres
  13. )ORDER BY Id;
复制代码
回复 支持 1 反对 0

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 04:55:02 | 显示全部楼层
关注一亩三分地微博:
Warald
longest phrases in a tweet, 水题,类似unique paths, pass all test cases
  1. static int maxLength(int[] a, int k) {
  2.         Queue<Integer> queue = new LinkedList<>();
  3.         int sum = 0;.鐣欏璁哄潧-涓浜-涓夊垎鍦
  4.         int maxLen = 0;
  5.         for(int cur : a){
  6.             if(sum + cur <= k){
  7.                 queue.offer(cur);
  8.                 sum += cur;
  9.             }else{      
  10.                 while(sum + cur > k){. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  11.                     maxLen = Math.max(maxLen, queue.size());
  12.                     int first = queue.poll();
  13.                     sum -= first;
  14.                 }
  15.                 sum += cur;
  16.                 queue.offer(cur);
  17.                 maxLen = Math.max(maxLen, queue.size());
  18.             }
  19.         }
  20.         maxLen = Math.max(maxLen, queue.size());
  21.         return maxLen;
  22.     }
复制代码

回复 支持 1 反对 0

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 04:40:16 | 显示全部楼层
information mask, pass all test cases
  1. public class Solution {
  2.     //mask the email
  3.     private static String emailMask(String email){ 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  4.         StringBuilder sb = new StringBuilder();
  5.         sb.append("E:");
  6.         sb.append(email.charAt(0));
  7.         sb.append("*****");
  8.         int start = email.lastIndexOf('@') - 1;. Waral 鍗氬鏈夋洿澶氭枃绔,
  9.         sb.append(email.substring(start));
  10.         return sb.toString();
  11.     }
  12.    
  13.     //mask the phone number
  14.     private static String phoneMask(String phone){
  15.         StringBuilder sb = new StringBuilder();
  16.         sb.append("P:");
  17.         char[] arr= phone.toCharArray();
  18.         int num = 0; 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  19.         for(char c : arr){
  20.             if(Character.isDigit(c)){
  21.                 num++;.鏈枃鍘熷垱鑷1point3acres璁哄潧
  22.             }
  23.         }
  24.         int countryCode = num - 10;
  25.         boolean extra = false;
  26.         if(countryCode > 0){
  27.             sb.append('+'); 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  28.             extra = true;.鐣欏璁哄潧-涓浜-涓夊垎鍦
  29.         }
  30.         int cur = 0;
  31.         
  32.             while(cur < arr.length && countryCode > 0){
  33.                 if(Character.isDigit(arr[cur])){
  34.                     sb.append('*');. Waral 鍗氬鏈夋洿澶氭枃绔,
  35.                     countryCode--;
  36.                 }
  37.                 cur++;
  38.             }
  39.         if(extra){
  40.             sb.append('-');
    . 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  41.         }
  42.         int cnt = 0;
  43.         while(cur < arr.length && cnt < 3){. visit 1point3acres.com for more.
  44.             if(Character.isDigit(arr[cur])){
  45.                     sb.append('*');
  46.                     cnt++;
  47.             }
  48.             cur++;
  49.         }
  50.         sb.append('-');
  51.         cnt = 0;. Waral 鍗氬鏈夋洿澶氭枃绔,
  52.         while(cur < arr.length && cnt < 3){
  53.             if(Character.isDigit(arr[cur])){
  54.                     sb.append('*');
  55.                     cnt++;
  56.             }
  57.             cur++;
  58.         }
  59.         sb.append('-');
  60.         cnt = 0;
  61.         while(cur < arr.length && cnt < 4){
  62.             if(Character.isDigit(arr[cur])){
  63.                     sb.append(arr[cur]);
  64.                     cnt++;. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  65.             }. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  66.             cur++;
  67.         }
  68.         return sb.toString();
  69.         
  70.     }
  71.     public static void main(String args[] ) throws Exception {.鏈枃鍘熷垱鑷1point3acres璁哄潧
  72.         /* Enter your code here. Read input from STDIN. Print output to STDOUT */
  73.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));. 1point 3acres 璁哄潧
  74.         String input;. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  75.         while((input = br.readLine()) != null){
  76.             //String input = br.readLine();
  77.             String[] inputs = input.trim().split(":");. Waral 鍗氬鏈夋洿澶氭枃绔,
  78.             if(inputs[0].trim().equals("E")){
  79.                 System.out.println(emailMask(inputs[1].trim()));
  80.             }else if(inputs[0].trim().equals("P")){
  81.                 System.out.println(phoneMask(inputs[1].trim()));. 鍥磋鎴戜滑@1point 3 acres
  82.             }
  83.         }
  84.         br.close(); 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  85.         . 鍥磋鎴戜滑@1point 3 acres
  86.     }-google 1point3acres
  87. }
复制代码
回复 支持 1 反对 0

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 04:34:47 | 显示全部楼层
Time series aggregation的代码,只能过第一个test case,感觉自己代码逻辑没问题,应该是某处小bug,傻逼hacker rank还不显示test case真是醉了。。求好心人提示下错在哪里。。

  1. public class Solution { 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  2.     static String beginMonth;
  3.     static String endMonth;. from: 1point3acres.com/bbs
  4.    // static Map<String, Map<String, Integer>> logs = new TreeMap<>(Collections.reverseOrder());
  5.     static Map<String, Map<String, Integer>> logs = new HashMap<>();
  6.     static PriorityQueue<Log> maxHeap;
  7.    
  8.     static class LogComparator implements Comparator<Log>{
  9.         public int compare(Log log1, Log log2){
  10.             String date1 = log1.date;
  11.             String date2 = log2.date;
  12.             String category1= log1.category;
  13.             String category2 = log2.category;
  14.             if(date1.equals(date2)){
  15.                 return category1.compareTo(category2);
  16.             }else{
  17.                 return date2.compareTo(date1);. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  18.             }
  19.         }
  20.     }
  21.    
  22.     static class Log{
  23.         String date;
  24.         String category;
  25.         int cnt;
  26.         Log(String date, String category, int cnt){
  27.             this.date = date;
  28.             this.category = category;
  29.             this.cnt = cnt;. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  30.         }
  31.     }
  32.    
  33.     static String removeDD(String date){
  34.         //return date;
  35.         Date initDate = null;
  36.         try{
  37.             initDate = new SimpleDateFormat("yyyy-MM-dd").parse(date);
  38.         }catch (ParseException e){
  39.             e.printStackTrace();
    . Waral 鍗氬鏈夋洿澶氭枃绔,
  40.         } 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  41.         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM");
  42.         String parsedDate = formatter.format(initDate);
  43.         return parsedDate;
  44.        .鐣欏璁哄潧-涓浜-涓夊垎鍦
  45.     }. From 1point 3acres bbs
  46.    
  47.     static boolean isBefore(String d1, String d2){
  48.         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
  49.         Date date1 = null;
  50.         Date date2 = null;
  51.         try{
  52.             date1 = format.parse(d1);. Waral 鍗氬鏈夋洿澶氭枃绔,
  53.             date2 = format.parse(d2);
  54.         }catch(ParseException e){
  55.             e.printStackTrace();
  56.         }
  57.         return date1.before(date2);
  58.     }. From 1point 3acres bbs
  59.    
  60.     public static void main(String args[] ) throws Exception {
  61.         /* Enter your code here. Read input from STDIN. Print output to STDOUT */ 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  62.         
  63.         String line = null;
  64.         int num = 0;
  65.         try{
  66.             BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  67.             
  68.             while((line = br.readLine()) != null){-google 1point3acres
  69.                 if(num == 0){
  70.                     String[] interval = line.trim().split(",");
  71.                     if(interval.length != 2){
  72.                         throw new Exception("invalid input!");
  73.                     }
  74.                     beginMonth = interval[0].trim();
  75.                     endMonth = interval[1].trim();
  76.                     //System.out.println(line);
  77.                      num++;
  78.                 }else if(num == 1){
  79.                      num++; . Waral 鍗氬鏈夋洿澶氭枃绔,
  80.                     continue;
  81.                     
  82.                 }else{. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  83.                     //System.out.println(line);
  84.                     String[] lines = line.trim().split(",");
  85.                     if(lines.length != 3){
  86.                         throw new Exception("invalid input!");
  87.                     }
  88.                     String date = lines[0].trim();
  89.                     //System.out.println(date);
  90.                     String trans_date = removeDD(date);
  91.                     //System.out.println(trans_date); 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  92.                     String category = lines[1].trim();
  93.                     String count = lines[2].trim();
  94.                     int cnt = Integer.parseInt(count);
  95.                     //System.out.println(date);.1point3acres缃
  96.                     if(isBefore(trans_date, beginMonth) || isBefore(endMonth, trans_date) || cnt == 0) continue;.鏈枃鍘熷垱鑷1point3acres璁哄潧
  97.                     if(!logs.containsKey(trans_date)){
  98.                         logs.put(trans_date, new HashMap<String, Integer>());
  99.                     }
  100.                     Map<String, Integer> map = logs.get(trans_date);
  101.                     if(!map.containsKey(category)){
  102.                         map.put(category, cnt);
  103.                     }else{-google 1point3acres
  104.                         map.put(category, map.get(category) + cnt);
  105.                     }
  106.                     
  107.                     logs.put(trans_date,map);
  108.                      num++;
  109.                 }. From 1point 3acres bbs
  110.                
  111.             }
  112.         }catch (Exception e){
  113.             e.printStackTrace();
  114.         }. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  115.         
  116.         maxHeap = new PriorityQueue<Log>(num, new LogComparator());
  117. . 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  118.        for(Map.Entry<String, Map<String, Integer>> entry : logs.entrySet()){
  119.            . 1point 3acres 璁哄潧
  120.             String date = entry.getKey();. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  121.             //System.out.println(date);
  122.             Map<String, Integer> map = entry.getValue();. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  123.             
  124.             for(Map.Entry<String, Integer> sub_entry : map.entrySet()){
  125.               String category = sub_entry.getKey();. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  126.               int cnt= sub_entry.getValue();
  127.               maxHeap.offer(new Log(date, category, cnt));
  128.                 //System.out.println(date + " "  + category +  " " + cnt);
  129.             }
  130.        }
  131.         
  132.         Log prev = null;
  133.         StringBuilder sb = new StringBuilder();
  134.         while(!maxHeap.isEmpty()){
  135.             Log cur = maxHeap.poll();
  136.             if(prev == null){
  137.                 sb.append(cur.date);
  138.                 sb.append(',');
  139.                 sb.append(' ');
  140.                 sb.append(cur.category);
  141.                 sb.append(',');
  142.                 sb.append(' ');
  143.                 sb.append(cur.cnt);
  144.             }else if(prev.date.equals(cur.date)){. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  145.                 sb.append(',');
  146.                 sb.append(' ');
  147.                 sb.append(cur.category);
  148.                 sb.append(',');
  149.                 sb.append(' ');
  150.                 sb.append(cur.cnt); 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  151.             }else{
  152.                 String printString = sb.toString();. visit 1point3acres.com for more.
  153.                 System.out.println(printString);
  154.                 sb = new StringBuilder();
  155.                 sb.append(cur.date);.鏈枃鍘熷垱鑷1point3acres璁哄潧
  156.                 sb.append(',');
  157.                 sb.append(' ');
  158.                 sb.append(cur.category);
  159.                 sb.append(',');. 1point3acres.com/bbs
  160.                 sb.append(' ');-google 1point3acres
  161.                 sb.append(cur.cnt);
  162.             }
  163.             prev = cur;
  164.         }
  165.         String printString = sb.toString();
  166.         System.out.println(printString);
  167.       /*
  168.         for(Map.Entry<String, Map<String, Integer>> entry : logs.entrySet()){
  169.             StringBuilder sb = new StringBuilder();. Waral 鍗氬鏈夋洿澶氭枃绔,
  170.             String date = entry.getKey();
  171.             sb.append(date);
  172.             Map<String, Integer> map = entry.getValue();
  173.             
  174.             for(Map.Entry<String, Integer> sub_entry : map.entrySet()){
  175.               String category = sub_entry.getKey();
  176.               int cnt= sub_entry.getValue();. 1point 3acres 璁哄潧
  177.               sb.append(',');
  178.               sb.append(' ');
  179.               sb.append(category);
  180.               sb.append(',');.1point3acres缃
  181.               sb.append(' ');
  182.               sb.append(cnt);
  183.             }. visit 1point3acres.com for more.
  184.             System.out.println(sb.toString());
  185.         } 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  186.     */
  187.     }.1point3acres缃
  188. }
复制代码
回复 支持 1 反对 0

使用道具 举报

EkoLanWei 发表于 2016-10-31 05:22:03 | 显示全部楼层
求发邮箱 hongruzh@gmail.com 楼主好人 楼主一身平安
回复 支持 0 反对 1

使用道具 举报

 楼主| duziyuanyang 发表于 2016-11-5 04:54:41 | 显示全部楼层
liu.haonan 发表于 2016-11-5 04:19
请问一下楼主,这个key一定会是2512208吗?还是不同的testcase会有不同的key?
如果key不相同的话,在不 ...

1.不同case的key不一样
2.signature不一定有循环key,最坏情况signature就是一个key,你要做的就是去check是否有循环key, 重新加密的时候能得到给你的string
回复 支持 1 反对 0

使用道具 举报

elizabethxiazhi 发表于 2016-10-31 06:04:23 | 显示全部楼层
LZ人真好,刚花了两个多小时写twitter,time series 那个题目过了, 我开始也只过一个case,后来用treemap<time, treemap<engagement, count>>做的就都过去了。。。(原来用的treemap<time,List<>()>).....
回复 支持 1 反对 0

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 04:35:55 | 显示全部楼层
Orders 1的SQL代码,passed all test case
  1. select o.customerNumber as customer
  2. from ORDERS as o
  3. group by customerNumber.鐣欏璁哄潧-涓浜-涓夊垎鍦
  4. order by count(orderNumber) desc
  5. limit 1;
复制代码
回复 支持 反对

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 04:38:55 | 显示全部楼层
employee, department题, 自己没遇到,不过同学试了通过了. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  1. select d.Name, count(e.ID) as ID_COUNT. more info on 1point3acres.com
  2. from Department d. visit 1point3acres.com for more.
  3. left join Employee e
  4. on e.DEPT_ID = d.DEPT_ID. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  5. group by d.Name
  6. order by ID_COUNT desc, NAME
复制代码
回复 支持 反对

使用道具 举报

sccnju 发表于 2016-10-31 04:41:36 | 显示全部楼层
谢谢楼主。我跟楼主一样也是只能过第一个test case。。醉了。。。看了下楼主的code觉得没什么毛病。。。。.鏈枃鍘熷垱鑷1point3acres璁哄潧

再次吐槽一下居然不给看test case。。。。
回复 支持 反对

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 04:52:46 | 显示全部楼层
encrypt and decrypt message, 这题搞了我一晚上时间,结果点开oa发现没有这题。。anyway,我的代码自己拿case跑了一下,如果有问题欢迎指正
  1. static String getKey(String tweets, String signature){
  2.     char[] sig_arr = signature.toCharArray();
  3.     char[] twe_arr = tweets.toCharArray();

  4.     int letter_len = 0;.鏈枃鍘熷垱鑷1point3acres璁哄潧
  5.     for(char c : sig_arr){
  6.       if(Character.isLetter(c)) letter_len++;. 1point 3acres 璁哄潧
  7.     }
  8.     char[] keys = new char[letter_len];

  9.     int sig_cur = sig_arr.length - 1;
  10.     int twe_cur = twe_arr.length - 1;
  11.     letter_len--;
  12.     while(sig_cur >= 0){
    .鏈枃鍘熷垱鑷1point3acres璁哄潧
  13.       if(Character.isLetter(sig_arr[sig_cur])){. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  14.         char sig = sig_arr[sig_cur];
  15.         char twe = twe_arr[twe_cur];
  16.         int tmp  = sig - twe;
  17.         //System.out.println(-tmp);. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  18.         int offset = (twe - sig) < 0 ? (twe + 26 - sig) : (twe - sig);
  19.         keys[letter_len] = (char)('0' + offset);
  20.         letter_len--;
  21.       }
  22.       sig_cur--;
  23.       twe_cur--;. visit 1point3acres.com for more.
  24.     }

  25.     String short_key = shortenKey(new String(keys));
  26.    
  27.     for(int i = 1; i < short_key.length(); i++){
  28.       StringBuilder key_builder = new StringBuilder();
  29.       key_builder.append(short_key.substring(i));
  30.       key_builder.append(short_key.substring(0, i));
  31.       String tmp_key = key_builder.toString();
  32.       String new_tweets = decrypt(tweets, tmp_key);
  33.       if(new_tweets.substring(new_tweets.length() - signature.length()).equals(signature)){
  34.         return tmp_key;
  35.       }.鏈枃鍘熷垱鑷1point3acres璁哄潧
  36.     }
  37.     return "";
  38.   }

  39.   static String shortenKey(String keys){.鏈枃鍘熷垱鑷1point3acres璁哄潧
  40.     String reverse_keys = reverse(keys);
  41.     int end = 1;//end == 7
  42.     String tmp_key = "";
  43.     while(end < reverse_keys.length()){. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  44.       tmp_key = reverse_keys.substring(0, end);////2802215
  45.       int tmp_len = tmp_key.length();//7
  46.       int tmp_begin = end ;//
  47.       while(tmp_begin + tmp_len <= reverse_keys.length()){
  48.         if(!tmp_key.equals(reverse_keys.substring(tmp_begin, tmp_begin + tmp_len))){
  49.           break;
  50.         }else{
  51.           tmp_begin += tmp_len;
  52.         }
  53.       }

  54.       if(tmp_begin + tmp_len <= reverse_keys.length()){. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  55.         end++;
  56.       }else{
  57.         int i = 0;
  58.         while(tmp_begin < reverse_keys.length() && reverse_keys.charAt(tmp_begin) == tmp_key.charAt(i)){
  59.           i++;
  60.           tmp_begin++;
  61.         }
  62.         if(tmp_begin == reverse_keys.length()){-google 1point3acres
  63.           return reverse(tmp_key);
  64.         }else{
  65.           end++;
  66.         }
  67.       }-google 1point3acres
  68.     }
  69.     return reverse(tmp_key);
  70.   }
  71.   static String reverse(String s){
  72.     char[] arr = s.toCharArray();
  73.     int begin = 0, end = arr.length - 1;
  74.     while(begin < end){. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  75.       char tmp  = arr[begin];
  76.       arr[begin] = arr[end];
  77.       arr[end] = tmp;.1point3acres缃
  78.       begin++;. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  79.       end--;
  80.     }
  81.     return new String(arr);
  82.   }

  83.   static String decrypt(String tweets, String key){
  84.     char[] key_arr = key.trim().toCharArray();
  85.     int len = key_arr.length;

  86.     char[] tweets_arr = tweets.toCharArray();
  87.     int letter = 0;
  88.     for(int i = 0; i< tweets_arr.length; i++){
  89.       if(Character.isLetter(tweets_arr[i])){. 1point 3acres 璁哄潧
  90.         boolean upper = Character.isUpperCase(tweets_arr[i]);
  91.         int offset = key_arr[letter % len] - '0';
    . from: 1point3acres.com/bbs
  92.         tweets_arr[i] = (char)(tweets_arr[i] - offset);
  93.         if(upper && tweets_arr[i] < 'A'){
  94.           tweets_arr[i] += 26;. From 1point 3acres bbs
  95.         }
  96.         if(!upper && tweets_arr[i] < 'a'){
  97.           tweets_arr[i] += 26;
  98.         }
  99.         letter++;
  100.       }. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  101.     }
  102.     return new String(tweets_arr);
  103.   }
复制代码
回复 支持 反对

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 04:54:06 | 显示全部楼层
expression tree,这题我自己也没遇到,不过貌似是个高频题,贴上代码欢迎讨论,因为没有跑过hackerrank,不保证能pass all test case
  1. static String experssionTree(String string){
  2.   String[] input = string.trim().split("/");
  3.   String expression = input[0];. 1point 3acres 璁哄潧
  4.   String operation = input[1];
  5.   for(char op : operation.toCharArray()){-google 1point3acres
  6.     if(op == 'R'){
  7.       expression = reverse(expression);
  8.     }.鏈枃鍘熷垱鑷1point3acres璁哄潧
  9.     if(op == 'S'){.1point3acres缃
  10.       expression = simplify(expression);. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  11.     }
  12.   }
  13.   return expression;
  14. }
  15. static String reverse(String s){
  16.   char[] arr = s.toCharArray();
  17.   int begin = 0, end = arr.length - 1;
  18.   while(begin < end){
  19.     char tmp = arr[begin];
  20.     arr[begin] = arr[end];. more info on 1point3acres.com
  21.     arr[end] = tmp;. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  22.     if(arr[begin] == '('){-google 1point3acres
  23.       arr[begin] = ')';.鏈枃鍘熷垱鑷1point3acres璁哄潧
  24.     }else if(arr[begin] == ')'){-google 1point3acres
  25.       arr[begin] = '(';  
  26.     }
  27.     if(arr[end] == '('){
    . visit 1point3acres.com for more.
  28.       arr[end] = ')';
  29.     }else if(arr[end] == ')'){
  30.       arr[end] = '(';  
  31.     }
  32.     begin++;
  33.     end--;
  34.   }
  35.   return new String(arr);
  36. }
  37. static String simplify(String s){
  38.   boolean firstLeft = true;.鐣欏璁哄潧-涓浜-涓夊垎鍦
  39.   char[] arr = s.toCharArray();
  40.   Stack<Integer> stk = new Stack<>();
  41.   List<Integer> index = new ArrayList<>();
  42.   for(int i = arr.length - 1; i >= 0; i --){
  43.     if(arr[i] == ')'){
  44.       stk.push(i);
  45.     }
  46.     if(arr[i] == '('){
  47.       int rightIndex = stk.pop();
  48.       if(firstLeft == true){
  49.         int leftIndex = i;
  50.         index.add(rightIndex);. more info on 1point3acres.com
  51.         index.add(leftIndex);
  52.         firstLeft = false;. 鍥磋鎴戜滑@1point 3 acres
  53.       }else{
  54.         if(stk.isEmpty()){
  55.           firstLeft = true;.鐣欏璁哄潧-涓浜-涓夊垎鍦
  56.         }.1point3acres缃
  57.       }
  58.     }
  59.   }

  60.   StringBuilder sb = new StringBuilder(s);
  61.   Iterator<Integer> iterator = index.iterator();
  62.   while(iterator.hasNext()){
  63.     int id = iterator.next();. Waral 鍗氬鏈夋洿澶氭枃绔,
  64.     sb = sb.deleteCharAt(id );
  65.   }
  66.   return sb.toString();
  67. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 04:56:09 | 显示全部楼层
DNA序列那题LC最新的433已经出来了,大家可以去做下,思路跟word ladder是一样的,总体也不是很难。
回复 支持 反对

使用道具 举报

路未翎 发表于 2016-10-31 05:00:07 | 显示全部楼层
楼主好人!请收下膝盖!!!祝下周谷歌面试过过过!!昨天刚整理完地里的题写了两题,准备今天继续写来着
回复 支持 反对

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 05:00:09 | 显示全部楼层
还有几题除了log parser看地里吐槽test case过不去的,其它总体来说都不是很难,只是hackerrank看不见test case,所以有时候一个人不一定能想到,如果能有人一起讨论下就更好啦,毕竟感觉twitter oa不是侧重考算法。。

各位加油!
回复 支持 反对

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 05:05:22 | 显示全部楼层
sccnju 发表于 2016-10-31 04:41
谢谢楼主。我跟楼主一样也是只能过第一个test case。。醉了。。。看了下楼主的code觉得没什么毛病。。。。
...

是啊,不给看test case真是很操蛋。。
回复 支持 反对

使用道具 举报

 楼主| duziyuanyang 发表于 2016-10-31 05:06:01 | 显示全部楼层
路未翎 发表于 2016-10-31 05:00
楼主好人!请收下膝盖!!!祝下周谷歌面试过过过!!昨天刚整理完地里的题写了两题,准备今天继续写来着{: ...

借你吉言!也祝你好运啦,抽到简单题过过过
回复 支持 反对

使用道具 举报

rebecca1111 发表于 2016-10-31 05:13:57 | 显示全部楼层
mark 楼主好人,祝福狗家顺利
回复 支持 反对

使用道具 举报

本版积分规则

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-7-22 19:02

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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