判断存不存在解比找出解容易,但思路是一致的,都使用了memorize来存放搜索结果
public class Solution {
public boolean wordBreak(String s, List<String> wordDict) {
return backws(s,wordDict,new HashMap<String,Boolean>());
}
// dfs
private boolean backws(String s, List<String> wordDict,
HashMap<String, Boolean> map) {
if(map.containsKey(s)) return map.get(s);
boolean res = false;
for(String word: wordDict){
if(s.startsWith(word)){
if(word.length()==s.length()) {
res = true;
}
else{
res = backws(s.substring(word.length()),wordDict,map);
}
if(res) break;
}
}
map.put(s, res);
return res;
}
}