DP use HashMap:

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

 package twoSigma;

 import java.util.Arrays;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.lang.StringBuilder;

 public class LongestChain {
     public int findLongestChain(String[] words) {
         if (words==null || words.length==0) return 0;
         int longestChain = 0;
         Arrays.sort(words, new Comparator<String>() {
             public int compare(String str1, String str2) {
                 return str1.length()-str2.length();
             }
         });
         HashMap<String, Integer> map = new HashMap<String, Integer>();
         for (String word : words) {
             if (map.containsKey(word)) continue;
             map.put(word, 1);
             for (int i=0; i<word.length(); i++) {
                 StringBuilder sb = new StringBuilder(word);
                 sb.deleteCharAt(i);
                 String after = sb.toString();
                 if (map.containsKey(after) && map.get(after)+1 > map.get(word)) {
                     map.put(word, map.get(after)+1);
                 }
             }
             if (map.get(word) > longestChain) longestChain = map.get(word);
         }
         return longestChain;
     }

     /**
      * @param args
      */
     public static void main(String[] args) {
         // TODO Auto-generated method stub
         LongestChain sol = new LongestChain();
         //String[] words = new String[]{"6", "a", "b", "ba", "bca", "bda", "bdca"};
         //String[] words = new String[]{"a", "a", "bc", "exf", "abc"};
         String[] words = new String[]{"bc", "abc"};
         int longestChain = sol.findLongestChain(words);
         System.out.println(longestChain);
     }

 }

2Sigma OA prepare: Longest Chain的更多相关文章

  1. 2Sigma OA prepare: Friends Circle

    DFS & BFS: 关键在于构造graph package twoSigma; import java.util.ArrayList; import java.util.HashSet; i ...

  2. G面经Prepare: Longest All One Substring

    give a string, all 1 or 0, we can flip a 0 to 1, find the longest 1 substring after the flipping 这是一 ...

  3. Twitter OA prepare: Two Operations

    准备T家OA,网上看的面经 最直接的方法,从target降到1,如果是奇数就减一,偶数就除2 public static void main(String[] args) { int a = shor ...

  4. UvaLive 6667 Longest Chain (分治求三元组LIS&amp;amp;树状数组)

    题目链接: here 题意: 和hdu4742类似.差别就是一部分三元组是直接给出的.另一部分是用他给的那个函数生成的.还有就是这里的大于是严格的大于a>b必须ax>bx,ay>by ...

  5. Twitter OA prepare: even sum pairs

    思路:无非就是扫描一遍记录奇数和偶数各自的个数,比如为M和N,然后就是奇数里面选两个.偶数里面选两个,答案就是M(M-1)/2 + N(N-1)/2

  6. Twitter OA prepare: K-complementary pair

    2sum的夹逼算法,需要sort一下.本身不难,但是tricky的地方在于允许同一个数组元素自己跟自己组成一个pair,比如上例中的[5, 5].而且数组本身就允许值相等的元素存在,在计算pair时, ...

  7. Twitter OA prepare: Anagram is A Palindrome

    Algorithm: Count the number of occurrence of each character. Only one character with odd occurrence ...

  8. Twitter OA prepare: Visit element of the array

    分析:就是建立一个boolean array来记录array里面每个元素的访问情况,遇到访问过的元素就停止visiting,返回未访问的结点个数 public int visiting(int[] A ...

  9. Twitter OA prepare: Rational Sum

    In mathematics, a rational number is any number that can be expressed in the form of a fraction p/q ...

随机推荐

  1. JS(去掉前后空格或去掉所有空格)的用法

    1.  去掉字符串前后所有空格: 代码如下: function Trim(str) { return str.replace(/(^\s*)|(\s*$)/g, ""); } 说明 ...

  2. js在控件原有的事件方法中加入自己的方法

    有没有碰到过这样的情况,在一个别人的页面上,你想为某个按钮加入自己的控制逻辑,满足条件的情况下才执行原有的事件方法呢? 这个时候在不能修改其原有方法的情况下,先获取控件的事件方法,并将其包装到自己的控 ...

  3. CodeForces - 405A

    Gravity Flip Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submit ...

  4. Matlab 支持向量机(SVM)实现多分类

    1.首先,你需要安装完成Matlab. 2.将libsvm-3.17.zip和drtoolbox.tar文件解压到:libsvm-3.17文件夹和drtoolbox,并放到MATLAB的工具箱安装目录 ...

  5. Ajax中get提交和post提交的区别

    $.post("HandlerLiuYan.ashx", { leixing: leixing, danwei: danwei, liuyan: liuyan, name: nam ...

  6. Unity3D 之射线检测

    这里来记录下射线检测的相关内容: 射线检测故名就是通过射线去检测是否和碰撞器产生了交集,和碰撞器与碰撞器发生交集一样,会返回一个真. 射线的用法很多:比如检测是否跳跃,通过向地面投射射线控制在地面时候 ...

  7. iOS 9之应用内搜索(CoreSpotlight)API

    金田(github 示例源码) 前言 在iOS9之前我们只能使用Spotlight来搜索应用名称来打开指定App,而其他的内容都是提供给系统使用(信息,联系人,邮件等).在iOS9以后Apple允许开 ...

  8. Unity3D 物体移动到点击位置

    using UnityEngine;using System.Collections; public class MoveToClick : MonoBehaviour{ public GameObj ...

  9. 零开始:NetCore项目权限管理系统:定义基本接口和实现

    上一篇讲了基础的框架搭建    地址:http://www.cnblogs.com/fuyu-blog/p/8909779.html 这篇主要讲解SqlSugar   ORM的数据库连接以及建表和接口 ...

  10. 简单的国际化i18n

    就是简单的中英文转换 index.jsp <%@ page language="java" contentType="text/html; charset=UTF- ...