
class Solution {
public:
vector<int> findSubstring(string s, vector<string>& words) {
vector<int> ans;
int l=words.size(),wl=words[0].length(),sl=s.length();
map<string,int> mp;
for(string s:words){
++mp[s];
}
/*auto it=mp.begin();
for(it=mp.begin();it!=mp.end();it++){
cout<<it->first<<" "<<it->second<<" "<<endl;
}*/
for(int i=0;i<sl-wl*l+1;i++){
map<string,int> mpi=mp;
for(int j=i;j<i+l*wl;j=j+wl){
string cur_s;
cur_s=s.substr(j,wl);
// cout<<j<<" "<<j+wl<<" "<<cur_s<<" ";
if(mpi.count(cur_s)>0){
--mpi[cur_s];
if(mpi[cur_s]==0){
mpi.erase(cur_s);
}
}else{
break;
//mpi[cur_s]++;
}
}
if(mpi.size()==0){
ans.push_back(i);
}
}
return ans;
}
};
博客展示了一段C++代码,定义了一个名为Solution的类,其中的findSubstring函数用于在给定字符串s中查找由字符串数组words组成的所有子字符串的起始索引。通过使用map存储words中各字符串的出现次数,遍历字符串s进行匹配,最终返回符合条件的起始索引。

被折叠的 条评论
为什么被折叠?



