zoukankan      html  css  js  c++  java
  • 2Sigma OA prepare: Longest Chain

    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 }
  • 相关阅读:
    Windows 10 Shell Commands
    scala spark streaming 打印kafka 数据
    Kafka 与 Flume 如何选择
    Scala map中下划线_._2的含义
    Spark中reduceByKey(_+_)的说明
    spark 内存设置
    windows spark3.1 hdfs 测试
    @Autowired、@Resource、和@Service注解详解
    Python 打印对象
    Python + logging 输出到屏幕,将log日志写入文件
  • 原文地址:https://www.cnblogs.com/EdwardLiu/p/6177843.html
Copyright © 2011-2022 走看看