首页 > 其他 > 详细

2Sigma OA prepare: Longest Chain

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

技术分享

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!