class Solution {
public boolean wordBreak(String s, List<String> wordDict) {
//目标:判断字符串s是否可以用wordDict中的单词组成(wordDict中的单词可以重复使用,也可以不全部用完)
//暴力法:
// s = 'leetcode'
//先试字典中的"leet" 检查leetcode是否以"leet"开头 去掉它 剩下子串是code 再递归去判断code能不能被拆分
return canBreak(s,wordDict);
}
//这个字符串s是否可以被成功拆分
public boolean canBreak(String s,List<String> wordDict){
if(s.isEmpty()){//空的也算
return true;
}
for(String word:wordDict){
if(s.startsWith(word)){
//如果是的 那么继续递归处理剩余字符串
if(canBreak(s.substring(word.length()),wordDict)){
return true;
}
}
}
return false;
}
}