leetcode 30:與所有單詞相關聯的字串
阿新 • • 發佈:2018-12-19
首先計算出words中所有的元素所合成的字串的長度len,s的下標每次往後移動一位,每移動一位,從s中取出len個字元構成字串判斷是否由words組成
bool compare(std::string str,std::vector<std::string> &words,std::vector<int> b){ int i=0; int c=0; int flag=0; while(i!=str.size()){ flag=0; for(int j=0;j<words.size();j++){ if(b[j]==0){ if(str.substr(i,words[j].size())==words[j]){ b[j]=1; c+=1; flag=1; i=i+words[j].size(); if(i==str.size()) return true; break; } } } if(flag==0) return false; } } std::vector<int> findSubstring(std::string s, std::vector<std::string>& words) { std::vector<int> a; std::vector<int> b; if(s.size()==0||words.size()==0) return a; int len=words.size(); for(int i=0;i<len;i++){ b.push_back(0); } int c=0; for(int i=0;i<len;i++){ c+=words[i].size(); } for(int i=0;i<s.size()-c+1;i++){ std::string str=s.substr(i,c); if(compare(str,words,b)) a.push_back(i); } return a; }