1
class Solution {
2
public:
3
vector<int> findSubstring(string s, vector<string> &words) {
4
int n = words[0].length();
5
int slen = s.length();
6
int len = slen - n * words.size();
7
vector<int> ans;
8
if (len < 0) return ans;
9
string t;
10
unordered_map<string, int> mp;
11
for (auto i = 0; i < words.size(); ++i) ++mp[words[i]];
12

13
for (int i = 0; i <= len; ++i) {
14
t = s.substr(i, n);
15
if (mp.find(t) != mp.end()) {
16
unordered_map<string, int> smp;
17
++smp[t];
18
int flag = 1;
19
for (int j = i + n, k = 1; k < words.size() && j + n <= slen; ++k, j = j + n) {
20
t = s.substr(j, n);
21
if (mp.find(t) != mp.end())
22
++smp[t];
23
else {
24
flag = 0;
25
break;
26
}
27
}
28
if (flag && smp == mp) ans.push_back(i);
29
}
30
}
31

32
return ans;
33
}
34
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0