// 举例: s = "leetcode", wordDict = ["l","eet", "code"]
public boolean wordBreak(String s, List<String> wordDict) {
// dp[i] : 字符串长度为i的话,dp[i]为true,表示可以拆分为一个或多个在字典中出现的单词。
// 这里的dp为valid
boolean[] valid = new boolean[s.length() + 1];
valid[0] = true;
for(int i = 1; i <= s.length(); i++) {
for(int j = 0; j < i; j++) {
// 这里的if条件如果不明白,可以举例,i等于4的时候 判断是否有leet
//当j=0,s.substring(j, i)就是leet,此时不包含,继续for循环
//当j=1,s.substring(j, i)是eet,而且valid[1]在第一轮for循环的时候判断也为true,表示可以拆分为一个或多个在字典中出现的单词
//因此,之后两个条件都满足,才能找到满足条件的子字符串
if(wordDict.contains(s.substring(j, i)) && valid[j]) {
valid[i] = true;//满足条件则把valid[i]置为true
}
}
}
return valid[s.length()];
}