leetcode-zgd-day46-139.单词拆分/背包问题总结

62 阅读1分钟

139.单词拆分

题目链接:139. 单词拆分 - 力扣(LeetCode)

解题思路:

需要注意的点在于,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()];
     }
 }