30. 串联所有单词的子串
1 class Solution 2 { 3 public: 4 vector<int> findSubstring(string s, vector<string>& words) 5 { 6 if(s.empty() || words.empty()) return {}; 7 int n = words.size(); // words有多少个单词 8 int length = words.back().size();//words中每个单词的长度 9 vector<int> res; 10 unordered_map<string,int> hash; 11 for(auto a : words) hash[a] ++; 12 if(s.size() < n * length) return res; 13 for(int i = 0;i <= s.size() - n * length;i ++) 14 { 15 unordered_map<string,int> temp; 16 int size = n; 17 int start = i; 18 string str = s.substr(start,length); 19 while(hash.count(str) && size) 20 { 21 temp[str] ++; 22 size --; 23 start += length; 24 str = s.substr(start,length); 25 } 26 if(temp == hash) res.push_back(i); 27 } 28 return res; 29 } 30 };
Mamba never out

浙公网安备 33010602011771号