May 2009 - May 2017 论坛八周年-你的足迹,我的骄傲


一亩三分地论坛

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

一亩三分地官方iOS手机应用下载
查看: 11531|回复: 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个死活过不去,在一楼贴上代码,如果有好心人帮忙看下,提点建议最好了。
另外发现这周末收到的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.鏈枃鍘熷垱鑷1point3acres璁哄潧
  1. SELECT. from: 1point3acres.com/bbs
  2.     Id,
  3.     CASE
  4.         WHEN M IS NULL THEN 'Leaf'
  5.         WHEN P_id IS NULL THEN 'Root'
  6.         ELSE 'Inner'
  7.     END AS TypeNode
  8. FROM(. 鍥磋鎴戜滑@1point 3 acres
  9.     SELECT
  10.         DISTINCT hijo.*, padre.P_id as M
  11.     FROM Tree hijo. 鍥磋鎴戜滑@1point 3 acres
  12.     LEFT JOIN Tree padre ON(hijo.Id = padre.P_id)
  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){-google 1point3acres
  6.             if(sum + cur <= k){
  7.                 queue.offer(cur);
  8.                 sum += cur;-google 1point3acres
  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;. Waral 鍗氬鏈夋洿澶氭枃绔,
  16.                 queue.offer(cur);. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  17.                 maxLen = Math.max(maxLen, queue.size());
    . Waral 鍗氬鏈夋洿澶氭枃绔,
  18.             }
  19.         }
  20.         maxLen = Math.max(maxLen, queue.size());
  21.         return maxLen;
  22.     }
复制代码
. visit 1point3acres.com for more.
回复 支持 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:");. 鍥磋鎴戜滑@1point 3 acres
  6.         sb.append(email.charAt(0));
  7.         sb.append("*****");. 1point3acres.com/bbs
  8.         int start = email.lastIndexOf('@') - 1;. visit 1point3acres.com for more.
  9.         sb.append(email.substring(start)); 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  10.         return sb.toString();
  11.     }
  12.     . 1point3acres.com/bbs
  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)){. visit 1point3acres.com for more.
  21.                 num++;
  22.             }. 1point3acres.com/bbs
  23.         }
  24.         int countryCode = num - 10;
  25.         boolean extra = false;-google 1point3acres
  26.         if(countryCode > 0){. 1point 3acres 璁哄潧
  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('*');
  35.                     countryCode--;
  36.                 }
  37.                 cur++;. visit 1point3acres.com for more.
  38.             }-google 1point3acres
  39.         if(extra){
  40.             sb.append('-');
  41.         }.1point3acres缃
  42.         int cnt = 0;. Waral 鍗氬鏈夋洿澶氭枃绔,
  43.         while(cur < arr.length && cnt < 3){
  44.             if(Character.isDigit(arr[cur])){
  45.                     sb.append('*');
  46.                     cnt++;
  47.             }.鏈枃鍘熷垱鑷1point3acres璁哄潧
  48.             cur++;. from: 1point3acres.com/bbs
  49.         }
  50.         sb.append('-');.1point3acres缃
  51.         cnt = 0;
  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('-');. 1point 3acres 璁哄潧
  60.         cnt = 0; 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  61.         while(cur < arr.length && cnt < 4){
  62.             if(Character.isDigit(arr[cur])){. Waral 鍗氬鏈夋洿澶氭枃绔,
  63.                     sb.append(arr[cur]);. From 1point 3acres bbs
  64.                     cnt++;-google 1point3acres
  65.             }
  66.             cur++;
  67.         }. Waral 鍗氬鏈夋洿澶氭枃绔,
  68.         return sb.toString();. 鍥磋鎴戜滑@1point 3 acres
  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));
  74.         String input;
  75.         while((input = br.readLine()) != null){
  76.             //String input = br.readLine();
  77.             String[] inputs = input.trim().split(":");
  78.             if(inputs[0].trim().equals("E")){
  79.                 System.out.println(emailMask(inputs[1].trim()));. 1point 3acres 璁哄潧
  80.             }else if(inputs[0].trim().equals("P")){
  81.                 System.out.println(phoneMask(inputs[1].trim()));
  82.             }
  83.         }. visit 1point3acres.com for more.
  84.         br.close();
  85.         . 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  86.     }
  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;
  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();
  40.         }
  41.         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM");
  42.         String parsedDate = formatter.format(initDate);
  43.         return parsedDate;
  44.       
  45.     }
  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);. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  53.             date2 = format.parse(d2);
  54.         }catch(ParseException e){
  55.             e.printStackTrace();. more info on 1point3acres.com
  56.         }. visit 1point3acres.com for more.
  57.         return date1.before(date2);
  58.     }
  59.     . From 1point 3acres bbs
  60.     public static void main(String args[] ) throws Exception {
  61.         /* Enter your code here. Read input from STDIN. Print output to STDOUT */
  62.         
    . 1point 3acres 璁哄潧
  63.         String line = null;
  64.         int num = 0;
  65.         try{. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  66.             BufferedReader br = new BufferedReader(new InputStreamReader(System.in));. From 1point 3acres bbs
  67.             .鐣欏璁哄潧-涓浜-涓夊垎鍦
  68.             while((line = br.readLine()) != null){
  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++;
  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);. From 1point 3acres bbs
  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);
  96.                     if(isBefore(trans_date, beginMonth) || isBefore(endMonth, trans_date) || cnt == 0) continue;
  97.                     if(!logs.containsKey(trans_date)){
  98.                         logs.put(trans_date, new HashMap<String, Integer>());
  99.                     }.1point3acres缃
  100.                     Map<String, Integer> map = logs.get(trans_date);
  101.                     if(!map.containsKey(category)){
  102.                         map.put(category, cnt);
  103.                     }else{
  104.                         map.put(category, map.get(category) + cnt);. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  105.                     }
  106.                     
  107.                     logs.put(trans_date,map);
  108.                      num++; . 1point 3acres 璁哄潧
  109.                 }
  110.                
  111.             }
  112.         }catch (Exception e){
  113.             e.printStackTrace();. 1point3acres.com/bbs
  114.         }. more info on 1point3acres.com
  115.         
    . 1point 3acres 璁哄潧
  116.         maxHeap = new PriorityQueue<Log>(num, new LogComparator());

  117.        for(Map.Entry<String, Map<String, Integer>> entry : logs.entrySet()){
  118.            
  119.             String date = entry.getKey();
  120.             //System.out.println(date);
  121.             Map<String, Integer> map = entry.getValue();
  122.             
  123.             for(Map.Entry<String, Integer> sub_entry : map.entrySet()){. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  124.               String category = sub_entry.getKey();
  125.               int cnt= sub_entry.getValue();
  126.               maxHeap.offer(new Log(date, category, cnt));
  127.                 //System.out.println(date + " "  + category +  " " + cnt);
    . 鍥磋鎴戜滑@1point 3 acres
  128.             }
  129.        }
  130.         
  131.         Log prev = null;
  132.         StringBuilder sb = new StringBuilder();
  133.         while(!maxHeap.isEmpty()){
  134.             Log cur = maxHeap.poll();
  135.             if(prev == null){
  136.                 sb.append(cur.date);
  137.                 sb.append(',');
  138.                 sb.append(' '); 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  139.                 sb.append(cur.category);
  140.                 sb.append(',');. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  141.                 sb.append(' ');
  142.                 sb.append(cur.cnt);
  143.             }else if(prev.date.equals(cur.date)){. from: 1point3acres.com/bbs
  144.                 sb.append(',');
  145.                 sb.append(' ');
  146.                 sb.append(cur.category);
  147.                 sb.append(',');
  148.                 sb.append(' ');
  149.                 sb.append(cur.cnt);
  150.             }else{. From 1point 3acres bbs
  151.                 String printString = sb.toString();
  152.                 System.out.println(printString);
  153.                 sb = new StringBuilder();. more info on 1point3acres.com
  154.                 sb.append(cur.date);
  155.                 sb.append(',');. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  156.                 sb.append(' ');.鏈枃鍘熷垱鑷1point3acres璁哄潧
  157.                 sb.append(cur.category);
  158.                 sb.append(',');
  159.                 sb.append(' ');
  160.                 sb.append(cur.cnt);. Waral 鍗氬鏈夋洿澶氭枃绔,
  161.             }
  162.             prev = cur;-google 1point3acres
  163.         }
  164.         String printString = sb.toString();. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  165.         System.out.println(printString);
  166.       /*
  167.         for(Map.Entry<String, Map<String, Integer>> entry : logs.entrySet()){
  168.             StringBuilder sb = new StringBuilder();
  169.             String date = entry.getKey();
  170.             sb.append(date);
  171.             Map<String, Integer> map = entry.getValue();
  172.             
  173.             for(Map.Entry<String, Integer> sub_entry : map.entrySet()){
  174.               String category = sub_entry.getKey();
  175.               int cnt= sub_entry.getValue();
  176.               sb.append(',');
  177.               sb.append(' ');
  178.               sb.append(category);
  179.               sb.append(',');
  180.               sb.append(' ');
  181.               sb.append(cnt);
  182.             }
    . 1point 3acres 璁哄潧
  183.             System.out.println(sb.toString());
  184.         }
  185.     */
  186.     }
  187. }
复制代码
回复 支持 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. more info on 1point3acres.com
  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
  2. from Department d.1point3acres缃
  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觉得没什么毛病。。。。

再次吐槽一下居然不给看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;
  5.     for(char c : sig_arr){
  6.       if(Character.isLetter(c)) letter_len++;
  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){
  13.       if(Character.isLetter(sig_arr[sig_cur])){.1point3acres缃
  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--;
  24.     } 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  25. . Waral 鍗氬鏈夋洿澶氭枃绔,
  26.     String short_key = shortenKey(new String(keys));
  27.    
  28.     for(int i = 1; i < short_key.length(); i++){
  29.       StringBuilder key_builder = new StringBuilder();
  30.       key_builder.append(short_key.substring(i));
  31.       key_builder.append(short_key.substring(0, i));
  32.       String tmp_key = key_builder.toString();
  33.       String new_tweets = decrypt(tweets, tmp_key);. 1point3acres.com/bbs
  34.       if(new_tweets.substring(new_tweets.length() - signature.length()).equals(signature)){
  35.         return tmp_key;. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  36.       }
  37.     }
  38.     return "";.鏈枃鍘熷垱鑷1point3acres璁哄潧
  39.   }

  40.   static String shortenKey(String keys){.鏈枃鍘熷垱鑷1point3acres璁哄潧
  41.     String reverse_keys = reverse(keys); 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  42.     int end = 1;//end == 7
  43.     String tmp_key = "";
  44.     while(end < reverse_keys.length()){ 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  45.       tmp_key = reverse_keys.substring(0, end);////2802215
  46.       int tmp_len = tmp_key.length();//7
  47.       int tmp_begin = end ;//
  48.       while(tmp_begin + tmp_len <= reverse_keys.length()){
  49.         if(!tmp_key.equals(reverse_keys.substring(tmp_begin, tmp_begin + tmp_len))){
  50.           break;
  51.         }else{
  52.           tmp_begin += tmp_len;. From 1point 3acres bbs
  53.         }
  54.       }

  55. . 1point 3acres 璁哄潧
  56.       if(tmp_begin + tmp_len <= reverse_keys.length()){
  57.         end++;
  58.       }else{
  59.         int i = 0;
  60.         while(tmp_begin < reverse_keys.length() && reverse_keys.charAt(tmp_begin) == tmp_key.charAt(i)){
  61.           i++;. 1point 3acres 璁哄潧
  62.           tmp_begin++;. from: 1point3acres.com/bbs
  63.         }
  64.         if(tmp_begin == reverse_keys.length()){
  65.           return reverse(tmp_key);. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  66.         }else{
  67.           end++;
  68.         }
  69.       }
  70.     }
  71.     return reverse(tmp_key);
  72.   }
  73.   static String reverse(String s){
  74.     char[] arr = s.toCharArray();
  75.     int begin = 0, end = arr.length - 1;
  76.     while(begin < end){
  77.       char tmp  = arr[begin];-google 1point3acres
  78.       arr[begin] = arr[end];. visit 1point3acres.com for more.
  79.       arr[end] = tmp;
  80.       begin++;
  81.       end--;. 鍥磋鎴戜滑@1point 3 acres
  82.     }
  83.     return new String(arr);
  84.   }. 鍥磋鎴戜滑@1point 3 acres

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

  88.     char[] tweets_arr = tweets.toCharArray();
  89.     int letter = 0;
  90.     for(int i = 0; i< tweets_arr.length; i++){
  91.       if(Character.isLetter(tweets_arr[i])){
  92.         boolean upper = Character.isUpperCase(tweets_arr[i]);
  93.         int offset = key_arr[letter % len] - '0';.鏈枃鍘熷垱鑷1point3acres璁哄潧
  94.         tweets_arr[i] = (char)(tweets_arr[i] - offset);
  95.         if(upper && tweets_arr[i] < 'A'){
  96.           tweets_arr[i] += 26;
  97.         }
  98.         if(!upper && tweets_arr[i] < 'a'){
  99.           tweets_arr[i] += 26;
  100.         }
  101.         letter++;
  102.       }
  103.     }
  104.     return new String(tweets_arr);
  105.   }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 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];
  4.   String operation = input[1];
  5.   for(char op : operation.toCharArray()){. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  6.     if(op == 'R'){
  7.       expression = reverse(expression);
  8.     }
    . 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  9.     if(op == 'S'){. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  10.       expression = simplify(expression);
  11.     }
  12.   }. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  13.   return expression;
  14. }
  15. static String reverse(String s){.鏈枃鍘熷垱鑷1point3acres璁哄潧
  16.   char[] arr = s.toCharArray();
  17.   int begin = 0, end = arr.length - 1;
  18.   while(begin < end){. From 1point 3acres bbs
  19.     char tmp = arr[begin];
  20.     arr[begin] = arr[end];
  21.     arr[end] = tmp;
  22.     if(arr[begin] == '('){
  23.       arr[begin] = ')';
  24.     }else if(arr[begin] == ')'){
  25.       arr[begin] = '(';  . 1point3acres.com/bbs
  26.     }
  27.     if(arr[end] == '('){
  28.       arr[end] = ')';
  29.     }else if(arr[end] == ')'){.1point3acres缃
  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;. visit 1point3acres.com for more.
  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);
  51.         index.add(leftIndex);
  52.         firstLeft = false;
  53.       }else{. visit 1point3acres.com for more.
  54.         if(stk.isEmpty()){-google 1point3acres
  55.           firstLeft = true;
  56.         }
  57.       }
  58.     }
  59.   }. visit 1point3acres.com for more.

  60.   StringBuilder sb = new StringBuilder(s);.1point3acres缃
  61.   Iterator<Integer> iterator = index.iterator();
  62.   while(iterator.hasNext()){
  63.     int id = iterator.next();
  64.     sb = sb.deleteCharAt(id );
  65.   }
    .鏈枃鍘熷垱鑷1point3acres璁哄潧
  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 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2017-5-28 01:41

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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