My code:
public class Solution {
public List<Integer> findSubstring(String s, String[] words) {
List<Integer> ret = new ArrayList<Integer>();
if (s == null || s.length() == 0 || words == null || words.length == 0) {
return ret;
}
int L = words[0].length();
Map<String, Integer> map = new HashMap<String, Integer>();
for (int i = 0; i < words.length; i++) {
if (!map.containsKey(words[i])) {
map.put(words[i], 1);
}
else {
map.put(words[i], map.get(words[i]) + 1);
}
}
for (int i = 0; i <= s.length() - words.length * L; i++) {
int j = i;
int c = 0;
Map<String, Integer> copy = new HashMap<String, Integer>(map);
while (c < words.length) {
String temp = s.substring(j, j + L);
if (copy.containsKey(temp)) {
int times = copy.get(temp);
if (times <= 0) {
break;
}
copy.put(temp, times - 1);
c++;
j = j + L;
}
else {
break;
}
}
if (c == words.length) {
ret.add(i);
}
}
return ret;
}
}
这道题目其实没什么意思。暴力解法。
很像 minimum window substring
Anyway, Good luck, Richardo! -- 10/09/2016