由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 求问FB题目
相关主题
F面经的一题Leetcode第30题真心不容易
攒rp整理面试题(1)string match/text searchhow to resolve this question?
问道老题on-site的时候Trie和suffix tree会考coding吗?
有人同看Longest Palindromic Substring 这道题么?问道算法题
问两个Palindrome的老题Palindrome那题,OJ上通不过
关于KMP里pre-process table的里的fall backPalindrome那题,OJ上通不过
FB电面面经leetcode上的Longest Palindromic Substring难道不收brute for
Leetcode的Substring with Concatenation of All Words超时。leetcode里的Palindrome partition问题
相关话题的讨论汇总
话题: integer话题: string话题: int话题: null话题: min
进入JobHunting版参与讨论
1 (共1页)
L*****1
发帖数: 34
1
FB面经里面的,没想明白怎么做,望各位大牛赐教。
1, 给一个string,比如UAXXBAUB,给一个pattern,比如AB,返回包含pattern的最短
substring,结果是AUB,考虑pattern是有序的。
就是Minimum Window Substring的有序版,主要考虑的是找到window后shrink到
底怎么做,有好几种情况。比如"UAXSSXSXAAUB", "XXA",找到XSSXSXA之后shrink窗口
,得把leftBound前进到第2个X。
2, 给一个int array,有正有负, 给一个target number,找出这个array里有没有连
续的几个数之和等于target number 要用O(n) time
感觉是DP,但是没什么头绪。
3, 给一个字典,可以组合任意个单词,怎么找到最长的可能的palindom
谢谢
t****o
发帖数: 33
2
第2题可不可以这么做,首先用一个hashmap记录每一个位置i,从index 0 到 i所有数
字之和,从头到尾维护一个sum变量,然后在每一个index,检查sum-n是不是已经出现
过,假设在index j,前j个数和为k-n,在index i(i>j),前i个数的和为k,那么从
j+1到i的和就是n了。
P****i
发帖数: 1362
3
Hash cumsum
[在 teedoo (teedoo) 的大作中提到:]
:第2题可不可以这么做,首先用一个hashmap记录每一个位置i,从index 0 到 i所有数
:字之和,从头到尾维护一个sum变量,然后在每一个index,检查sum-n是不是已经出
现过,假设在index j,前j个数和为k-n,在index i(i>j),前i个数的和为k,
那么从j+1到i的和就是n了。
:...........
c*****m
发帖数: 271
4
写写自己的理解
1. DP
f(i,j)为母串s[0,...,i]匹配到子串p[0,...j]的最短substring的长度,则
f(i,j) = f(i-1,j-1)+1, if s[i]==p[j]
= f(i-1,j)+1, if s[i]!=p[j]
然后要用另外一个二维数组记录f(i,j)的前面是哪个操作,j-1或者j,i始终减1
最后查找f(i,n)哪个最小,n为子串的长度,并且回溯找到起始的index,返回值
2. 将(0,i)的和存在hashmap >,key为(0,i)的和,vector
录具有相同和的下标。然后从头开始,对于i,如果(0,i)的和为sum, 找sum-x是否在
hashmap中,如果在且vector中有小于i的下标,存在,否则i++;
3. 能想到的就是建一个trie,然后brute force

【在 L*****1 的大作中提到】
: FB面经里面的,没想明白怎么做,望各位大牛赐教。
: 1, 给一个string,比如UAXXBAUB,给一个pattern,比如AB,返回包含pattern的最短
: substring,结果是AUB,考虑pattern是有序的。
: 就是Minimum Window Substring的有序版,主要考虑的是找到window后shrink到
: 底怎么做,有好几种情况。比如"UAXSSXSXAAUB", "XXA",找到XSSXSXA之后shrink窗口
: ,得把leftBound前进到第2个X。
: 2, 给一个int array,有正有负, 给一个target number,找出这个array里有没有连
: 续的几个数之和等于target number 要用O(n) time
: 感觉是DP,但是没什么头绪。
: 3, 给一个字典,可以组合任意个单词,怎么找到最长的可能的palindom

k******e
发帖数: 145
5
2 .
Sum + hash
b***e
发帖数: 1419
6
1. 把无关的char忽视然后直接kmp。

【在 L*****1 的大作中提到】
: FB面经里面的,没想明白怎么做,望各位大牛赐教。
: 1, 给一个string,比如UAXXBAUB,给一个pattern,比如AB,返回包含pattern的最短
: substring,结果是AUB,考虑pattern是有序的。
: 就是Minimum Window Substring的有序版,主要考虑的是找到window后shrink到
: 底怎么做,有好几种情况。比如"UAXSSXSXAAUB", "XXA",找到XSSXSXA之后shrink窗口
: ,得把leftBound前进到第2个X。
: 2, 给一个int array,有正有负, 给一个target number,找出这个array里有没有连
: 续的几个数之和等于target number 要用O(n) time
: 感觉是DP,但是没什么头绪。
: 3, 给一个字典,可以组合任意个单词,怎么找到最长的可能的palindom

d*******8
发帖数: 23
7
请问能具体解释一下在下面这个例子中KMP如何发挥作用么? 多谢.
S = "ABBCCD"
P = "ABCD"
如何忽略无关的char然后用KMP搜索啊? 按照我的理解,S中所有的char都是相关的char,
在S中是搜索不到"ABCD"这个子串的.

【在 b***e 的大作中提到】
: 1. 把无关的char忽视然后直接kmp。
z***b
发帖数: 127
8
http://www.quora.com/Given-an-input-array-of-integers-of-size-n
第一题有比这个答案更好的吗?
s*******z
发帖数: 14
9
第三题是这样,每次碰到一个string,看其substring(0 - i) 是否是palindrome,如
果是,再看substring(i)的 reverse是否存在在hashmap中,如果是同时满足这两个条
件,存成一个pair结果。如果不满足,就直接存到hashmap里面。
以上操作做完有一个bug,就是只能看短的palindrome段出现的比长的早。所以要把全
部单词都reverse一下,再做一遍。然后再得到一堆pair。
以上所有pair里面维护一个最大长度的就行了
I*******g
发帖数: 7600
10
第一题:
public static String shortestString(String s, String p){
String result = null;
if (s== null || p == null || p.length() >s.length()) return null;
if (s.length() ==0 || p.length() ==0) return "";
Map indexMap = new HashMap();
List indexList = new ArrayList();
int min = s.length() +1;

for(int i =0 ;i < s.length(); i++){
for(Integer x: indexList){
int j = indexMap.get(x);
if ( j < p.length()-1 &&(p.charAt(j+1) == s.charAt(i))){
indexMap.put(x, j+1);
if( j == p.length()-2 && i -x +1 < min){
min = i-x +1;
result = s.substring(x, i+1);
}
}
}
if (s.charAt(i) == p.charAt(0)){
indexList.add(i);
indexMap.put(i, 0);
}
}
return result;
}

【在 L*****1 的大作中提到】
: FB面经里面的,没想明白怎么做,望各位大牛赐教。
: 1, 给一个string,比如UAXXBAUB,给一个pattern,比如AB,返回包含pattern的最短
: substring,结果是AUB,考虑pattern是有序的。
: 就是Minimum Window Substring的有序版,主要考虑的是找到window后shrink到
: 底怎么做,有好几种情况。比如"UAXSSXSXAAUB", "XXA",找到XSSXSXA之后shrink窗口
: ,得把leftBound前进到第2个X。
: 2, 给一个int array,有正有负, 给一个target number,找出这个array里有没有连
: 续的几个数之和等于target number 要用O(n) time
: 感觉是DP,但是没什么头绪。
: 3, 给一个字典,可以组合任意个单词,怎么找到最长的可能的palindom

相关主题
关于KMP里pre-process table的里的fall backLeetcode第30题真心不容易
FB电面面经how to resolve this question?
Leetcode的Substring with Concatenation of All Words超时。on-site的时候Trie和suffix tree会考coding吗?
进入JobHunting版参与讨论
h***s
发帖数: 45
11
好方法,应该也是 O(nk)吧? k是pattern的长度,n是s的长度。
indexMap记录的是从index i开始能够最远match到p的index j+1。

【在 I*******g 的大作中提到】
: 第一题:
: public static String shortestString(String s, String p){
: String result = null;
: if (s== null || p == null || p.length() >s.length()) return null;
: if (s.length() ==0 || p.length() ==0) return "";
: Map indexMap = new HashMap();
: List indexList = new ArrayList();
: int min = s.length() +1;
:
: for(int i =0 ;i < s.length(); i++){

b***e
发帖数: 1419
12
KMP is not exactly accurate in this case. What I really mean is that
this is a standard regex matching problem, to its essence. For
instance, if you have a pattern XXA, then the regex would be
var p = /.*X.*X.*A.*/;
All you need to do is to figure out the deterministic finite state
automata (DFSA) corresponding to this regex and apply it on S. The
construction of the DFA is bound to O(2^k) where k is the length of P.
But after that the matching would be O(n) where n is the length of S.
So the time complexity for this is O(min(n, 2^k)). Practically, k is
small, and the naive construction of the DFSA does not take as high as
2^k.

char,

【在 d*******8 的大作中提到】
: 请问能具体解释一下在下面这个例子中KMP如何发挥作用么? 多谢.
: S = "ABBCCD"
: P = "ABCD"
: 如何忽略无关的char然后用KMP搜索啊? 按照我的理解,S中所有的char都是相关的char,
: 在S中是搜索不到"ABCD"这个子串的.

t**********r
发帖数: 1497
13
这是电面题么?
t*****a
发帖数: 106
14
这个解法不对啊。
首先,一个单词substring(0 - i) 可能不是palindrome, 但和另一个单词合在一起是
palindrome。比如adcb, bcda.
其次,题目是可以组合任意个单词,不止两个。也许所有字典里的单词合在
一起是一个palindrome.

【在 s*******z 的大作中提到】
: 第三题是这样,每次碰到一个string,看其substring(0 - i) 是否是palindrome,如
: 果是,再看substring(i)的 reverse是否存在在hashmap中,如果是同时满足这两个条
: 件,存成一个pair结果。如果不满足,就直接存到hashmap里面。
: 以上操作做完有一个bug,就是只能看短的palindrome段出现的比长的早。所以要把全
: 部单词都reverse一下,再做一遍。然后再得到一堆pair。
: 以上所有pair里面维护一个最大长度的就行了

y*****e
发帖数: 712
15
第一题好难。。
z***b
发帖数: 127
16
你能把这个代码的思想说的详细点吗?谢谢!

【在 I*******g 的大作中提到】
: 第一题:
: public static String shortestString(String s, String p){
: String result = null;
: if (s== null || p == null || p.length() >s.length()) return null;
: if (s.length() ==0 || p.length() ==0) return "";
: Map indexMap = new HashMap();
: List indexList = new ArrayList();
: int min = s.length() +1;
:
: for(int i =0 ;i < s.length(); i++){

R*******G
发帖数: 21
17
3 - 任意个单词 怎么做啊?

【在 L*****1 的大作中提到】
: FB面经里面的,没想明白怎么做,望各位大牛赐教。
: 1, 给一个string,比如UAXXBAUB,给一个pattern,比如AB,返回包含pattern的最短
: substring,结果是AUB,考虑pattern是有序的。
: 就是Minimum Window Substring的有序版,主要考虑的是找到window后shrink到
: 底怎么做,有好几种情况。比如"UAXSSXSXAAUB", "XXA",找到XSSXSXA之后shrink窗口
: ,得把leftBound前进到第2个X。
: 2, 给一个int array,有正有负, 给一个target number,找出这个array里有没有连
: 续的几个数之和等于target number 要用O(n) time
: 感觉是DP,但是没什么头绪。
: 3, 给一个字典,可以组合任意个单词,怎么找到最长的可能的palindom

G*****m
发帖数: 5395
18
第三题怎么解?
谢谢!

【在 L*****1 的大作中提到】
: FB面经里面的,没想明白怎么做,望各位大牛赐教。
: 1, 给一个string,比如UAXXBAUB,给一个pattern,比如AB,返回包含pattern的最短
: substring,结果是AUB,考虑pattern是有序的。
: 就是Minimum Window Substring的有序版,主要考虑的是找到window后shrink到
: 底怎么做,有好几种情况。比如"UAXSSXSXAAUB", "XXA",找到XSSXSXA之后shrink窗口
: ,得把leftBound前进到第2个X。
: 2, 给一个int array,有正有负, 给一个target number,找出这个array里有没有连
: 续的几个数之和等于target number 要用O(n) time
: 感觉是DP,但是没什么头绪。
: 3, 给一个字典,可以组合任意个单词,怎么找到最长的可能的palindom

w*****d
发帖数: 105
19
3题,是否还有限制每个单词只能用一次?否则,如果字典里有一个回文单词w,那么无
限个w连接起来还是回文。
不过即使加这个限制,这个题貌似也没有多项式时间的解法。
b****h
发帖数: 163
20
你这个最坏情况会达到n^2,比如在ABABABA....ABABC中找ABC
其实只需要记录每个prefix最近一次出现的index,不需要把每个prefix所有出现的都
存下来,这样可以O(nk)

【在 I*******g 的大作中提到】
: 第一题:
: public static String shortestString(String s, String p){
: String result = null;
: if (s== null || p == null || p.length() >s.length()) return null;
: if (s.length() ==0 || p.length() ==0) return "";
: Map indexMap = new HashMap();
: List indexList = new ArrayList();
: int min = s.length() +1;
:
: for(int i =0 ;i < s.length(); i++){

相关主题
问道算法题leetcode上的Longest Palindromic Substring难道不收brute for
Palindrome那题,OJ上通不过leetcode里的Palindrome partition问题
Palindrome那题,OJ上通不过python搞不定Longest Palindromic Substring啊
进入JobHunting版参与讨论
L*****1
发帖数: 34
21
FB面经里面的,没想明白怎么做,望各位大牛赐教。
1, 给一个string,比如UAXXBAUB,给一个pattern,比如AB,返回包含pattern的最短
substring,结果是AUB,考虑pattern是有序的。
就是Minimum Window Substring的有序版,主要考虑的是找到window后shrink到
底怎么做,有好几种情况。比如"UAXSSXSXAAUB", "XXA",找到XSSXSXA之后shrink窗口
,得把leftBound前进到第2个X。
2, 给一个int array,有正有负, 给一个target number,找出这个array里有没有连
续的几个数之和等于target number 要用O(n) time
感觉是DP,但是没什么头绪。
3, 给一个字典,可以组合任意个单词,怎么找到最长的可能的palindom
谢谢
t****o
发帖数: 33
22
第2题可不可以这么做,首先用一个hashmap记录每一个位置i,从index 0 到 i所有数
字之和,从头到尾维护一个sum变量,然后在每一个index,检查sum-n是不是已经出现
过,假设在index j,前j个数和为k-n,在index i(i>j),前i个数的和为k,那么从
j+1到i的和就是n了。
P****i
发帖数: 1362
23
Hash cumsum
[在 teedoo (teedoo) 的大作中提到:]
:第2题可不可以这么做,首先用一个hashmap记录每一个位置i,从index 0 到 i所有数
:字之和,从头到尾维护一个sum变量,然后在每一个index,检查sum-n是不是已经出
现过,假设在index j,前j个数和为k-n,在index i(i>j),前i个数的和为k,
那么从j+1到i的和就是n了。
:...........
c*****m
发帖数: 271
24
写写自己的理解
1. DP
f(i,j)为母串s[0,...,i]匹配到子串p[0,...j]的最短substring的长度,则
f(i,j) = f(i-1,j-1)+1, if s[i]==p[j]
= f(i-1,j)+1, if s[i]!=p[j]
然后要用另外一个二维数组记录f(i,j)的前面是哪个操作,j-1或者j,i始终减1
最后查找f(i,n)哪个最小,n为子串的长度,并且回溯找到起始的index,返回值
2. 将(0,i)的和存在hashmap >,key为(0,i)的和,vector
录具有相同和的下标。然后从头开始,对于i,如果(0,i)的和为sum, 找sum-x是否在
hashmap中,如果在且vector中有小于i的下标,存在,否则i++;
3. 能想到的就是建一个trie,然后brute force

【在 L*****1 的大作中提到】
: FB面经里面的,没想明白怎么做,望各位大牛赐教。
: 1, 给一个string,比如UAXXBAUB,给一个pattern,比如AB,返回包含pattern的最短
: substring,结果是AUB,考虑pattern是有序的。
: 就是Minimum Window Substring的有序版,主要考虑的是找到window后shrink到
: 底怎么做,有好几种情况。比如"UAXSSXSXAAUB", "XXA",找到XSSXSXA之后shrink窗口
: ,得把leftBound前进到第2个X。
: 2, 给一个int array,有正有负, 给一个target number,找出这个array里有没有连
: 续的几个数之和等于target number 要用O(n) time
: 感觉是DP,但是没什么头绪。
: 3, 给一个字典,可以组合任意个单词,怎么找到最长的可能的palindom

k******e
发帖数: 145
25
2 .
Sum + hash
b***e
发帖数: 1419
26
1. 把无关的char忽视然后直接kmp。

【在 L*****1 的大作中提到】
: FB面经里面的,没想明白怎么做,望各位大牛赐教。
: 1, 给一个string,比如UAXXBAUB,给一个pattern,比如AB,返回包含pattern的最短
: substring,结果是AUB,考虑pattern是有序的。
: 就是Minimum Window Substring的有序版,主要考虑的是找到window后shrink到
: 底怎么做,有好几种情况。比如"UAXSSXSXAAUB", "XXA",找到XSSXSXA之后shrink窗口
: ,得把leftBound前进到第2个X。
: 2, 给一个int array,有正有负, 给一个target number,找出这个array里有没有连
: 续的几个数之和等于target number 要用O(n) time
: 感觉是DP,但是没什么头绪。
: 3, 给一个字典,可以组合任意个单词,怎么找到最长的可能的palindom

d*******8
发帖数: 23
27
请问能具体解释一下在下面这个例子中KMP如何发挥作用么? 多谢.
S = "ABBCCD"
P = "ABCD"
如何忽略无关的char然后用KMP搜索啊? 按照我的理解,S中所有的char都是相关的char,
在S中是搜索不到"ABCD"这个子串的.

【在 b***e 的大作中提到】
: 1. 把无关的char忽视然后直接kmp。
z***b
发帖数: 127
28
http://www.quora.com/Given-an-input-array-of-integers-of-size-n
第一题有比这个答案更好的吗?
s*******z
发帖数: 14
29
第三题是这样,每次碰到一个string,看其substring(0 - i) 是否是palindrome,如
果是,再看substring(i)的 reverse是否存在在hashmap中,如果是同时满足这两个条
件,存成一个pair结果。如果不满足,就直接存到hashmap里面。
以上操作做完有一个bug,就是只能看短的palindrome段出现的比长的早。所以要把全
部单词都reverse一下,再做一遍。然后再得到一堆pair。
以上所有pair里面维护一个最大长度的就行了
I*******g
发帖数: 7600
30
第一题:
public static String shortestString(String s, String p){
String result = null;
if (s== null || p == null || p.length() >s.length()) return null;
if (s.length() ==0 || p.length() ==0) return "";
Map indexMap = new HashMap();
List indexList = new ArrayList();
int min = s.length() +1;

for(int i =0 ;i < s.length(); i++){
for(Integer x: indexList){
int j = indexMap.get(x);
if ( j < p.length()-1 &&(p.charAt(j+1) == s.charAt(i))){
indexMap.put(x, j+1);
if( j == p.length()-2 && i -x +1 < min){
min = i-x +1;
result = s.substring(x, i+1);
}
}
}
if (s.charAt(i) == p.charAt(0)){
indexList.add(i);
indexMap.put(i, 0);
}
}
return result;
}

【在 L*****1 的大作中提到】
: FB面经里面的,没想明白怎么做,望各位大牛赐教。
: 1, 给一个string,比如UAXXBAUB,给一个pattern,比如AB,返回包含pattern的最短
: substring,结果是AUB,考虑pattern是有序的。
: 就是Minimum Window Substring的有序版,主要考虑的是找到window后shrink到
: 底怎么做,有好几种情况。比如"UAXSSXSXAAUB", "XXA",找到XSSXSXA之后shrink窗口
: ,得把leftBound前进到第2个X。
: 2, 给一个int array,有正有负, 给一个target number,找出这个array里有没有连
: 续的几个数之和等于target number 要用O(n) time
: 感觉是DP,但是没什么头绪。
: 3, 给一个字典,可以组合任意个单词,怎么找到最长的可能的palindom

相关主题
请问一道Leetcode的题:Longest Palindromic Substring攒rp整理面试题(1)string match/text search
两个Amazon面试题问道老题
F面经的一题有人同看Longest Palindromic Substring 这道题么?
进入JobHunting版参与讨论
h***s
发帖数: 45
31
好方法,应该也是 O(nk)吧? k是pattern的长度,n是s的长度。
indexMap记录的是从index i开始能够最远match到p的index j+1。

【在 I*******g 的大作中提到】
: 第一题:
: public static String shortestString(String s, String p){
: String result = null;
: if (s== null || p == null || p.length() >s.length()) return null;
: if (s.length() ==0 || p.length() ==0) return "";
: Map indexMap = new HashMap();
: List indexList = new ArrayList();
: int min = s.length() +1;
:
: for(int i =0 ;i < s.length(); i++){

b***e
发帖数: 1419
32
KMP is not exactly accurate in this case. What I really mean is that
this is a standard regex matching problem, to its essence. For
instance, if you have a pattern XXA, then the regex would be
var p = /.*X.*X.*A.*/;
All you need to do is to figure out the deterministic finite state
automata (DFSA) corresponding to this regex and apply it on S. The
construction of the DFA is bound to O(2^k) where k is the length of P.
But after that the matching would be O(n) where n is the length of S.
So the time complexity for this is O(min(n, 2^k)). Practically, k is
small, and the naive construction of the DFSA does not take as high as
2^k.

char,

【在 d*******8 的大作中提到】
: 请问能具体解释一下在下面这个例子中KMP如何发挥作用么? 多谢.
: S = "ABBCCD"
: P = "ABCD"
: 如何忽略无关的char然后用KMP搜索啊? 按照我的理解,S中所有的char都是相关的char,
: 在S中是搜索不到"ABCD"这个子串的.

t**********r
发帖数: 1497
33
这是电面题么?
t*****a
发帖数: 106
34
这个解法不对啊。
首先,一个单词substring(0 - i) 可能不是palindrome, 但和另一个单词合在一起是
palindrome。比如adcb, bcda.
其次,题目是可以组合任意个单词,不止两个。也许所有字典里的单词合在
一起是一个palindrome.

【在 s*******z 的大作中提到】
: 第三题是这样,每次碰到一个string,看其substring(0 - i) 是否是palindrome,如
: 果是,再看substring(i)的 reverse是否存在在hashmap中,如果是同时满足这两个条
: 件,存成一个pair结果。如果不满足,就直接存到hashmap里面。
: 以上操作做完有一个bug,就是只能看短的palindrome段出现的比长的早。所以要把全
: 部单词都reverse一下,再做一遍。然后再得到一堆pair。
: 以上所有pair里面维护一个最大长度的就行了

y*****e
发帖数: 712
35
第一题好难。。
z***b
发帖数: 127
36
你能把这个代码的思想说的详细点吗?谢谢!

【在 I*******g 的大作中提到】
: 第一题:
: public static String shortestString(String s, String p){
: String result = null;
: if (s== null || p == null || p.length() >s.length()) return null;
: if (s.length() ==0 || p.length() ==0) return "";
: Map indexMap = new HashMap();
: List indexList = new ArrayList();
: int min = s.length() +1;
:
: for(int i =0 ;i < s.length(); i++){

R*******G
发帖数: 21
37
3 - 任意个单词 怎么做啊?

【在 L*****1 的大作中提到】
: FB面经里面的,没想明白怎么做,望各位大牛赐教。
: 1, 给一个string,比如UAXXBAUB,给一个pattern,比如AB,返回包含pattern的最短
: substring,结果是AUB,考虑pattern是有序的。
: 就是Minimum Window Substring的有序版,主要考虑的是找到window后shrink到
: 底怎么做,有好几种情况。比如"UAXSSXSXAAUB", "XXA",找到XSSXSXA之后shrink窗口
: ,得把leftBound前进到第2个X。
: 2, 给一个int array,有正有负, 给一个target number,找出这个array里有没有连
: 续的几个数之和等于target number 要用O(n) time
: 感觉是DP,但是没什么头绪。
: 3, 给一个字典,可以组合任意个单词,怎么找到最长的可能的palindom

G*****m
发帖数: 5395
38
第三题怎么解?
谢谢!

【在 L*****1 的大作中提到】
: FB面经里面的,没想明白怎么做,望各位大牛赐教。
: 1, 给一个string,比如UAXXBAUB,给一个pattern,比如AB,返回包含pattern的最短
: substring,结果是AUB,考虑pattern是有序的。
: 就是Minimum Window Substring的有序版,主要考虑的是找到window后shrink到
: 底怎么做,有好几种情况。比如"UAXSSXSXAAUB", "XXA",找到XSSXSXA之后shrink窗口
: ,得把leftBound前进到第2个X。
: 2, 给一个int array,有正有负, 给一个target number,找出这个array里有没有连
: 续的几个数之和等于target number 要用O(n) time
: 感觉是DP,但是没什么头绪。
: 3, 给一个字典,可以组合任意个单词,怎么找到最长的可能的palindom

w*****d
发帖数: 105
39
3题,是否还有限制每个单词只能用一次?否则,如果字典里有一个回文单词w,那么无
限个w连接起来还是回文。
不过即使加这个限制,这个题貌似也没有多项式时间的解法。
b****h
发帖数: 163
40
你这个最坏情况会达到n^2,比如在ABABABA....ABABC中找ABC
其实只需要记录每个prefix最近一次出现的index,不需要把每个prefix所有出现的都
存下来,这样可以O(nk)

【在 I*******g 的大作中提到】
: 第一题:
: public static String shortestString(String s, String p){
: String result = null;
: if (s== null || p == null || p.length() >s.length()) return null;
: if (s.length() ==0 || p.length() ==0) return "";
: Map indexMap = new HashMap();
: List indexList = new ArrayList();
: int min = s.length() +1;
:
: for(int i =0 ;i < s.length(); i++){

相关主题
有人同看Longest Palindromic Substring 这道题么?FB电面面经
问两个Palindrome的老题Leetcode的Substring with Concatenation of All Words超时。
关于KMP里pre-process table的里的fall backLeetcode第30题真心不容易
进入JobHunting版参与讨论
g*****y
发帖数: 94
41
貌似第一题的DP不work呀。

【在 c*****m 的大作中提到】
: 写写自己的理解
: 1. DP
: f(i,j)为母串s[0,...,i]匹配到子串p[0,...j]的最短substring的长度,则
: f(i,j) = f(i-1,j-1)+1, if s[i]==p[j]
: = f(i-1,j)+1, if s[i]!=p[j]
: 然后要用另外一个二维数组记录f(i,j)的前面是哪个操作,j-1或者j,i始终减1
: 最后查找f(i,n)哪个最小,n为子串的长度,并且回溯找到起始的index,返回值
: 2. 将(0,i)的和存在hashmap >,key为(0,i)的和,vector
: 录具有相同和的下标。然后从头开始,对于i,如果(0,i)的和为sum, 找sum-x是否在
: hashmap中,如果在且vector中有小于i的下标,存在,否则i++;

p*********g
发帖数: 911
42
第一题感觉结合bunnih 的建议,稍微修改一下IFloating的算法来的简单。而且效果还
不错。基本和下面链接差不多的效果。
http://www.quora.com/Given-an-input-array-of-integers-of-size-n

【在 g*****y 的大作中提到】
: 貌似第一题的DP不work呀。
y***r
发帖数: 8
43
试着写了一下,不知道对不对,求轻拍
public static String findMinimalWindow(String s, String t){
if(s==null || t==null || s.length() return null;
}
if(t.length()==0){
return "";
}
char[] cs=s.toCharArray();
char[] ct=t.toCharArray();
int n=cs.length, k=ct.length;
int[] lastDp=new int[n+1];
int[] dp = new int[n+1];
for(int j=0; j for(int i=0; i if(cs[i] == ct[j]){
if(j==0){
dp[i+1]=i;
}else{
dp[i+1]=lastDp[i];
}
}else{
dp[i+1]=dp[i];
}
}
lastDp=dp;
dp = new int[n+1];
}
int min=Integer.MAX_VALUE;
String minStr = null;
for(int i=1; i if(lastDp[i] != 0 && (i-lastDp[i]) min=i-lastDp[i];
minStr=s.substring(lastDp[i], i);
}
}
return minStr;
}
p*********g
发帖数: 911
44
不错。看明白了。
我也贴一下,求各位大牛给给意见。如果没问题, credits归IFloating和bunnih。
public static String shortestString(String s, String p){
String result = null;
if (s== null || p == null || p.length() >s.length()) return null;
if (s.length() ==0 || p.length() ==0) return "";
Map indexMap = new HashMap();
int min = s.length() +1;
for(int i =0 ;i < s.length(); i++){
for(Entry ent: indexMap.entrySet()){
int x = ent.getValue();
int j = ent.getKey();
if ( j < p.length()-1 &&(p.charAt(j+1) == s.charAt(i))){
indexMap.put(j+1,x);
if( j == p.length()-2 && i -x +1 < min){
min = i-x +1;
result = s.substring(x, i+1);
}
}
}

if (s.charAt(i) == p.charAt(0)){
indexMap.put(0, i);
}
}
return result;
}

【在 y***r 的大作中提到】
: 试着写了一下,不知道对不对,求轻拍
: public static String findMinimalWindow(String s, String t){
: if(s==null || t==null || s.length(): return null;
: }
: if(t.length()==0){
: return "";
: }
: char[] cs=s.toCharArray();
: char[] ct=t.toCharArray();

1 (共1页)
进入JobHunting版参与讨论
相关主题
leetcode里的Palindrome partition问题问两个Palindrome的老题
python搞不定Longest Palindromic Substring啊关于KMP里pre-process table的里的fall back
请问一道Leetcode的题:Longest Palindromic SubstringFB电面面经
两个Amazon面试题Leetcode的Substring with Concatenation of All Words超时。
F面经的一题Leetcode第30题真心不容易
攒rp整理面试题(1)string match/text searchhow to resolve this question?
问道老题on-site的时候Trie和suffix tree会考coding吗?
有人同看Longest Palindromic Substring 这道题么?问道算法题
相关话题的讨论汇总
话题: integer话题: string话题: int话题: null话题: min