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"]
.
Java:
http://blog.csdn.net/linhuanmars/article/details/22452163
仔细读了下也不是太难懂,就是从第一个字符开始试,试到头再换第二个开始。
Brute force
public class Solution {
public ArrayList<String> wordBreak(String s, Set<String> dict) {
ArrayList<String> res = new ArrayList<String>();
if(s==null||s.length()==0) return res;
help(s, dict,0,"",res);
return res;
}
private void help(String s,Set<String> dict,int start, String item, ArrayList<String> res )
{
if(start>=s.length())
{
res.add(item);
return;
}
StringBuilder str=new StringBuilder();
for(int i=0;i<s.length();i++)
{
str.append(s.charAt(i));
if(dict.contains(str.toString()))
{
String newItem=item.length()>0?(item+" "+str.toString()):str.toString();
help(s,dict,i+1,newItem,res);
}
}
}
}