美文网首页
word-break II

word-break II

作者: DaiMorph | 来源:发表于2019-07-22 23:56 被阅读0次
class Solution {
public:
    vector<string> wordBreak(string s, unordered_set<string> &dict) {
        vector<bool>f(s.length()+1,false);
        vector<vector<bool>>prev(s.length()+1,vector<bool>(s.length()));
        f[0]=true;
        for(int i=1;i<=s.length();i++)
        {
            for(int j=0;j<i;j++)
            {
                if(f[j]&&dict.find(s.substr(j,i-j))!=dict.end()){
                    f[i]=true;
                    prev[i][j]=true;
                }
            }
        }
        vector<string>path,result;
        dfs(s,prev,s.length(),path,result);
        return result;
    }
    void dfs(string &s,vector<vector<bool>>&prev,int cur,vector<string>&path,vector<string>&result)
    {
        if(cur==0)
        {
            string tmp;
            for(int i=0;i<path.size();i++)
            {
                tmp+=path[i];
                if(i!=path.size()-1)tmp+=" ";
                result.push_back(tmp);
            }
        }
        for(int i=0;i<s.size();i++)
        {
            if(prev[cur][i]){
                path.push_back(s.substr(i,cur-i));
                dfs(s,prev,i,path,result);
                path.pop_back();
            }
        }
    }
};

相关文章

网友评论

      本文标题:word-break II

      本文链接:https://www.haomeiwen.com/subject/oimglctx.html