140. Word Break II
class Solution {
public:
vector<string> wordBreak(string s, vector<string>& wordDict) {
int n = s.length();
if(n == 0) return vector<string>();
unordered_map<int, vector<string>> m;
m[0] = vector<string>(1,"");
for(int i = 1; i <= n; i++){
for(int j = 0; j < i; j++){
string new2check = s.substr(j, i - j);
if(m.find(j)!= m.end()&& find(wordDict.begin(), wordDict.end(), new2check)!=wordDict.end()){
auto tmp = m[j];
for(auto & str: tmp){
if(str == "") str+= new2check;
else str+=" " + new2check;
}
m[i].insert(m[i].end(),tmp.begin(),tmp.end());
}
}
}
return m[n];
}
};Last updated
Was this helpful?