30. Substring with Concatenation of All Words

LeetCode

String, Hash Tablelink)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Solution {
static List<Integer> findSubstring(String s, String[] words) {
if(s.length()==0||words.length==0) return new ArrayList();

Map<String,Integer> initial=new HashMap<>();
for(String ss:words) initial.put(ss, initial.getOrDefault(ss, 0)+1);

int len_array=words.length;
int len_single=words[0].length();
int len_str=s.length();

List<Integer> ls=new ArrayList<>();

for(int i=0;i<len_str-len_array*len_single+1;i++){
Map<String,Integer> check=new HashMap<>();
int j=0;
while(j<len_array){
String word=s.substring(i+j*len_single,i+(j+1)*len_single);
if(initial.containsKey(word)){
check.put(word, check.getOrDefault(word,0)+1);
if(check.get(word)>initial.getOrDefault(word,0)) break;
}else{
break;
}
j++;
}
if(j==len_array) ls.add(i);
}
return ls;
}
}

0%