我正在尝试在leet代码中执行单词分解问题
https://oj.leetcode.com/problems/word-break-ii/
给定一个字符串s和一个单词字典dict,在s中添加空格以构造一个句子,其中每个单词都是一个有效的字典单词。 归还所有这些可能的句子 例如,给定
s =“catsanddog”,
dict = [“cat”,“cats”,“and”,“sand”,“dog”] 解决方案是 [“猫与狗”,“猫沙狗”]。
public List<String> wordBreak(String s, Set<String>dict){
if(dict.size()==0 || (s.length()==0) )
return list;
if(s.length()==1 && dict.contains(s)){
list.add(s);
}else{
wordBreakHelper(s,dict);
}
return list;
}
public String wordBreakHelper(String s, Set<String> dict) {
if(dict.contains(s)){
return s;
}
if(cache.containsKey(s))
return cache.get(s);
int N = s.length();
for(int i=1;i<N;i++){
String prefix = s.substring(0,i);
if(dict.contains(prefix)){
String suffix = s.substring(i,N);
String segment = null;
segment = wordBreakHelper(suffix,dict);
if(segment!=null){
list.add(prefix+" "+segment);
return prefix+" "+segment;
}
}
}
cache.put(s,null);
return null;
}
输入
“abcd”,[“a”,“abc”,“b”,“cd”]
我的解决方案给出了
[“b cd”,“a b cd”]
但实际解决方案只是
“a b cd”。
为什么不应该
“b cd”
被视为有效的解决方案?你能帮我理解我的错误