题目:
废话不多说,直接贴代码
class Solution {
public List<Integer> findSubstring(String s, String[] words) {
List<Integer> ret=new LinkedList<>();
int size=words.length;
if(size==0) return ret;
Map<String,Integer> wordsMap=new HashMap<>(size);
for(String word:words)
wordsMap.put(word,wordsMap.getOrDefault(word,0)+1);
int wordLen=words[0].length();
int window=size*wordLen;
char[] charArray=s.toCharArray();
int slength=charArray.length;
for(int i=0;i<wordLen;++i){
for(int j=i;j+window<=slength;j+=wordLen){
Map<String,Integer> map=new HashMap<>(size);
// int hit = 0;
int go = j+window-wordLen;
for(int k=size-1;k>=0;--k){
String word=new String(charArray,go,wordLen);
int count=map.getOrDefault(word,0)+1;
int num = wordsMap.getOrDefault(word,0);
if(count>num){
j = go;
// map.clear();
// hit = size-k;
break;
}else if(k==0){
ret.add(j);
// hit = 0;
// map.clear();
}else{
map.put(word,count);
}
go -= wordLen;
}
}
}
return ret;
}
}
运行结果: