由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Minimum Window Substring (from leetcode)
相关主题
Minimum Window Substringpython搞不定Longest Palindromic Substring啊
上道题:非Minimum Window Substring这个怎么做?
leetcode的Longest Substring Without Repeating Characters解法好麻烦啊ebay电面,估计fail了
minimum window substring两道A家面试题
Minimum Window Substring 这题目算法导论书上有么?How to solve this Interview question... thanks
面试google面试的郁闷去掉单向链表中的重复元素 with O(n) time and O(1) (转载)
分享下G家第一个phone interview的题目an interview question
linkedin,rocketfuel, google面经若干问一个字符串面试问题
相关话题的讨论汇总
话题: dq话题: d1话题: window话题: d2话题: minimum
进入JobHunting版参与讨论
1 (共1页)
j********e
发帖数: 1192
1
问题如下。搞了个linear的算法,两个指针往后扫那种,实现起来太
复杂了,费了太多时间调试。有简单的O(n)算法么?
Minimum Window Substring
Given a string S and a string T, find the minimum window in S which will
contain all the characters in T in complexity O(n).
For example,
S = "ADOBECODEBANC"
T = "ABC"
Minimum window is "BANC".
Note:
If there is no such window in S that covers all characters in T, return the
emtpy string "".
If there are multiple such windows, you are guaranteed that there will
always be only one unique minimum window in S.
p*****2
发帖数: 21240
2

今天有时间写一个。

【在 j********e 的大作中提到】
: 问题如下。搞了个linear的算法,两个指针往后扫那种,实现起来太
: 复杂了,费了太多时间调试。有简单的O(n)算法么?
: Minimum Window Substring
: Given a string S and a string T, find the minimum window in S which will
: contain all the characters in T in complexity O(n).
: For example,
: S = "ADOBECODEBANC"
: T = "ABC"
: Minimum window is "BANC".
: Note:

p*****2
发帖数: 21240
3
def min(S,T):
d1={}
d2={}

for c in T:
if not d1.has_key(c):
d1[c]=0
d1[c]+=1

dq=deque()

count=len(d1)
ans=S
for i in xrange(len(S)):
c=S[i]
if d1.has_key(c):
dq.append(i)
if not d2.has_key(c):
d2[c]=0
d2[c]+=1

if d2[c]==d1[c]:
count-=1

if count==0:
while len(dq)>0 and d2[S[dq[0]]]>d1[S[dq[0]]]:
d2[S[dq[0]]]-=1
dq.popleft()
if dq[-1]-dq[0]+1 ans=S[dq[0]:dq[-1]+1]

return ans
C***U
发帖数: 2406
4
你的O(n)时间的算法 空间也是O(n)吧?

【在 j********e 的大作中提到】
: 问题如下。搞了个linear的算法,两个指针往后扫那种,实现起来太
: 复杂了,费了太多时间调试。有简单的O(n)算法么?
: Minimum Window Substring
: Given a string S and a string T, find the minimum window in S which will
: contain all the characters in T in complexity O(n).
: For example,
: S = "ADOBECODEBANC"
: T = "ABC"
: Minimum window is "BANC".
: Note:

j********e
发帖数: 1192
5
你想简单了,如果T是AAB,那么要求S对应的substring里包含两个A。
你的算法只适合T没有duplicate字符的情况。
而且memory usage是O(T.size()).

def min(S,T):
d1={}
d2={}

for c in T:
if not d1.has_key(c):
d1[c]=0
d1[c]+=1

dq=deque()

count=len(d1)
ans=S
for i in xrange(len(S)):
c=S[i]
if d1.has_key(c):
dq.append(i)
if not d2.has_key(c):
d2[c]=0
d2[c]+=1

if d2[c]==d1[c]:
count-=1

if count==0:
while len(dq)>0 and d2[S[dq[0]]]>d1[S[dq[0]]]:
d2[S[dq[0]]]-=1
dq.popleft()
if dq[-1]-dq[0]+1 ans=S[dq[0]:dq[-1]+1]

return ans

【在 p*****2 的大作中提到】
: def min(S,T):
: d1={}
: d2={}
:
: for c in T:
: if not d1.has_key(c):
: d1[c]=0
: d1[c]+=1
:
: dq=deque()

j********e
发帖数: 1192
6
空间上,我用了一个bitmap,256个int,所以应该算O(1)吧。
(btw,如果不算返回的字符串的话).
我的做法类似peking2的,但是用了bitmap替代queue

【在 C***U 的大作中提到】
: 你的O(n)时间的算法 空间也是O(n)吧?
p*****2
发帖数: 21240
7

are you sure?

【在 j********e 的大作中提到】
: 你想简单了,如果T是AAB,那么要求S对应的substring里包含两个A。
: 你的算法只适合T没有duplicate字符的情况。
: 而且memory usage是O(T.size()).
:
: def min(S,T):
: d1={}
: d2={}
:
: for c in T:
: if not d1.has_key(c):

j********e
发帖数: 1192
8
不好意思,我看错了,python我读起来还是比较费劲。

【在 p*****2 的大作中提到】
:
: are you sure?

w****x
发帖数: 2483
9
这题昨天用北京二爷的方法刚做过, 用一个counter记录cover住短字符串的个数并动
态更新,就不用每次去查int rec[256]了,计时花了不到15分钟
1 (共1页)
进入JobHunting版参与讨论
相关主题
问一个字符串面试问题Minimum Window Substring 这题目算法导论书上有么?
请问驿道面试题面试google面试的郁闷
问一个老的google面试题分享下G家第一个phone interview的题目
请教道算法题linkedin,rocketfuel, google面经若干
Minimum Window Substringpython搞不定Longest Palindromic Substring啊
上道题:非Minimum Window Substring这个怎么做?
leetcode的Longest Substring Without Repeating Characters解法好麻烦啊ebay电面,估计fail了
minimum window substring两道A家面试题
相关话题的讨论汇总
话题: dq话题: d1话题: window话题: d2话题: minimum