Leetcode---word Break II

来源:互联网 发布:圆珠笔头 知乎 编辑:程序博客网 时间:2024/06/05 00:21

Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each word is a valid dictionary word.

Return all such possible sentences.

For example, given
s = "catsanddog",
dict = ["cat", "cats", "and", "sand", "dog"].

A solution is ["cats and dog", "cat sand dog"].

这题有点难,我只贴出DFS的版本,没过TLE。

这种DFS其实是回溯,backtracing

vector<string> result;bool contain(unordered_set<string> &dict, string s)    {        unordered_set<string>::iterator ite = dict.find(s);        if(ite != dict.end())        return true;    else        return false;    }void f(string s,string temp,unordered_set<string> &dict){    if(contain(dict,s)){        if(temp!="")            result.push_back(temp+" "+s);        else            result.push_back(s);    }    for(int i=0;i<s.length();i++){        string s0=s.substr(0,i+1);        if(contain(dict,s0)){            if(temp!="")                f(s.substr(i+1),temp+" "+s0,dict);            else                f(s.substr(i+1),temp+s0,dict);        }    }}vector<string> wordBreak(string s, unordered_set<string> &dict) {    f(s,"",dict);    return result;}


0 0
原创粉丝点击