单词拆分-动态规划

36 阅读1分钟
// 单词拆分-动态规划  
// 输入: s = "leetcode", wordDict = ["leet", "code"]  
// 输出: true  
// 解释: 返回 true 因为 "leetcode" 可以由 "leet" 和 "code" 拼接成。  
public static boolean wordBreak(String s, List<String> wordDict){  
    Set<String> wordDictSet=new HashSet<String>(wordDict);  
    boolean[] dp=new boolean[s.length()+1];  
    //0-0  
    dp[0]=true;  
    for (int i = 1; i <=s.length() ; i++) {  
        for (int j = 0; j <i ; j++) {  
            // 0-j true  
            // j-i true  
            // 0-i true  
            if(dp[j]&&wordDictSet.contains(s.substring(j,i))){  
                dp[i]=true;  
                break;  
            }  
        }  
    }  
    return dp[s.length()];  
}