139. 单词拆分
题目:给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词
解法:动态规划
思路:数学符号:dp[i]表示前i个字符是否可以被空格拆分为一个或多个在字典中出现的单词;状态转移方程:当dp[i]true并且s[i,j)出现在wordDict中,则dp[j]=true
代码:
class Solution {
public boolean wordBreak(String s, List
int len = s.length();
if(len
return wordDict.contains(s);
}
boolean[] dp = new boolean[len+1]; //dp[i]表示前i个字符是否可以被空格拆分为一个或多个在字典中出现的单词
dp[0] = true;
int i=0;
while(i<=len){
if(dp[i]){
for(int j=i+1;j<=len;j++){
if(wordDict.contains(s.substring(i,j))){
dp[j] = true;
}
}
}
i++;
}
return dp[len];
}
}

浙公网安备 33010602011771号