码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode---word Break II

时间:2015-04-07 10:09:29      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:算法   leetcode   

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;
}


Leetcode---word Break II

标签:算法   leetcode   

原文地址:http://blog.csdn.net/ffmpeg4976/article/details/44903717

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!