https://leetcode.com/problems/substring-with-concatenation-of-all-words/
思路很容易,写对不容易。再做一遍。
逐个i判断是否为res_ind,然后对于每一个i都试探每个wordLen长的substring是否在L中。这里要注意L中可能有重复的words,所以不能简单的判断word是否在L中
http://www.cnblogs.com/zuoyuan/p/3779978.html
class Solution:
# @param S, a string
# @param L, a list of string
# @return a list of integer
def findSubstring(self, S, L):
words={}
wordNum=len(L)
for i in L:
if i not in words:
words[i]=1
else:
words[i]+=1
wordLen=len(L[0])
res=[]
for i in range(len(S)+1-wordLen*wordNum):#因为要找wordLen*wordNum这个长度的substring的start index,i最后一个可能的值就是len(S)-wordLen*wordNum
curr={}; j=0
while j<wordNum:
word=S[i+j*wordLen:i+j*wordLen+wordLen]
if word not in words:
break
if word not in curr:
curr[word]=1
else:
curr[word]+=1
if curr[word]>words[word]: break
j+=1
if j==wordNum: res.append(i)
return res