原网址为https://leetcode.com/problems/substring-with-concatenation-of-all-words/description/
一、题目
You are given a string, s, and a list of words, words, that are all of the same length. Find all starting indices of substring(s) in s that is a concatenation of each word in words exactly once and without any intervening characters.
For example, given:
s: "barfoothefoobarman"
words: ["foo", "bar"]
You should return the indices: [0,9]
.
(order does not matter).
二、实现
class Solution {
public:
vector<int> findSubstring(string s, vector<string>& words) {
vector<int> ans;
map<string, int> dict;
map<string, int> tdict;
for (auto w : words)
dict[w]++;
int wl = words[0].size();
int count = 0;
for (int i = 0; i < s.size() - wl + 1; i++) {
count = 0;
tdict.clear();
for (int j = i; j < s.size(); j += wl) {
string w = s.substr(j, wl);
if (dict.count(w) && tdict[w] < dict[w]) {
tdict[w]++;
count++;
if (count == words.size()) {
ans.push_back(i);
break;
}
} else {
break;
}
}
}
return ans;
}
};