把wordDict存到一颗字典树上,然后暴力拆分s串,枚举所有可能的情况,一一查询是否合法。
class Solution {
public:int ch[10010][26];int idx;bool vis[10010];int get(char c){return c-'a';}void insert(string s){int p=0;for(int i=0;i dfs(string s){vector res;for(int i=1;i<=s.size();i++){string ss=s.substr(0,i);if(search(ss)){if(i==s.size()){res.push_back(ss);continue;}auto t=dfs(s.substr(i));for(auto r:t){res.push_back(ss+" "+r);}}}return res;}vector wordBreak(string s, vector& wordDict) {for(auto ss:wordDict) insert(ss);return dfs(s);}
};
复杂度为指数级别。