[DP]139. Word Break

139. Word Break
动规,时间复杂度O(n^2),空间复杂度O(n)

For example, given

dict = ["leet", "code"].
Return true 

because "leetcode" can be segmented as "leet code".

class Solution {
    public boolean wordBreak(String s, List<String> wordDict) {
//         ~DP~
        if(wordDict.contains(s)) return true;
        
        //inDict[i] 即 0--i substring都可以在wordDict中找到,最终目标是返回inDict[s.length()-1]
        boolean[] inDict = new boolean[s.length()];
        for(int i = 1; i <= s.length() ;i++){   
            for(int j = 0; j < i; j++){
                //0---i串分为两个子串, 0---j-1,j---i
                if(( j == 0 || inDict[j-1]) && wordDict.contains(s.substring(j,i)) ){ //注意要把 j == 0判断放左边,防止OutofIndex
                    //最后一个单词j---i,和最后一个单词前的所有单词子串0---j-1,都在Dict中,则该子串必在Dict中。
                    inDict[i-1] = true;
                    break;
                }
            }
            
        }
        return inDict[s.length()-1];
        
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,768评论 0 33
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,424评论 0 10
  • 如果有下一个轮回 我不要这重蹈覆辙的错误 如果有,我宁愿错过 如果有下一个轮回 你在的驿站,一晚我也不想停留 哪怕...
    静若青莲阅读 342评论 37 46
  • 发现很多东西都报这个错 linker command failed with exit code 1 (use -...
    杨大虾阅读 216评论 0 0
  • 李翰祥的这版《倩女幽魂》(1960),只有79分钟,只算是个小品,但以其古典文雅的格调,诗情画意的气氛,在李翰祥的...
    匡KK阅读 1,525评论 0 0