139.单词拆分
解题思路:
需要注意的点在于,String相等要用equals方法,用==不可以。equals比较的才是值。
以及String.substring(startIndex,endIndex);
class Solution {
public boolean wordBreak(String s, List<String> wordDict) {
/**
* 1.dp[j] 前j个字符能否利用字典中出现的单词拼接出s
* 2.dp[j]
* if(dp[k] == true && wordDict.get(j).equals(s.substring(k,i)))
* dp[i] = true
* 3.dp[0] = true;
* 4.正向循环,背包容量在外,物品在内。因为是单词的排列
*/
boolean[] dp = new boolean[s.length() + 1];
Arrays.fill(dp, false);
dp[0] = true;
for(int i = 0; i <= s.length(); i++){
for(int j = 0; j < wordDict.size(); j++){
int k = i - wordDict.get(j).length();
if(k >= 0){
if(dp[k] == true && wordDict.get(j).equals(s.substring(k,i))){
dp[i] = true;
}
}
}
}
return dp[s.length()];
}
}