码迷,mamicode.com
首页 > 其他好文 > 详细

2Sigma OA prepare: Longest Chain

时间:2016-12-14 09:33:36      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:img   efault   import   idt   eth   method   amp   uil   src   

技术分享

DP use HashMap:

根据string的长度sort,然后维护每个string的longest chain,default为1,如果删除某个char生成的string能提供更长的chain,则更新

 1 package twoSigma;
 2 
 3 import java.util.Arrays;
 4 import java.util.Comparator;
 5 import java.util.HashMap;
 6 import java.lang.StringBuilder;
 7 
 8 public class LongestChain {
 9     public int findLongestChain(String[] words) {
10         if (words==null || words.length==0) return 0;
11         int longestChain = 0;
12         Arrays.sort(words, new Comparator<String>() {
13             public int compare(String str1, String str2) {
14                 return str1.length()-str2.length();
15             }
16         });
17         HashMap<String, Integer> map = new HashMap<String, Integer>();
18         for (String word : words) {
19             if (map.containsKey(word)) continue;
20             map.put(word, 1);
21             for (int i=0; i<word.length(); i++) {
22                 StringBuilder sb = new StringBuilder(word);
23                 sb.deleteCharAt(i);
24                 String after = sb.toString();
25                 if (map.containsKey(after) && map.get(after)+1 > map.get(word)) {
26                     map.put(word, map.get(after)+1);
27                 }
28             }
29             if (map.get(word) > longestChain) longestChain = map.get(word);
30         }
31         return longestChain;
32     }
33 
34     /**
35      * @param args
36      */
37     public static void main(String[] args) {
38         // TODO Auto-generated method stub
39         LongestChain sol = new LongestChain();
40         //String[] words = new String[]{"6", "a", "b", "ba", "bca", "bda", "bdca"};
41         //String[] words = new String[]{"a", "a", "bc", "exf", "abc"};
42         String[] words = new String[]{"bc", "abc"};
43         int longestChain = sol.findLongestChain(words);
44         System.out.println(longestChain);
45     }
46 
47 }

 

2Sigma OA prepare: Longest Chain

标签:img   efault   import   idt   eth   method   amp   uil   src   

原文地址:http://www.cnblogs.com/EdwardLiu/p/6177843.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!