解题思路:
DP,解法来自题目后面讨论区,这道题用回溯会超时
时间复杂度:O(n^2)
空间复杂度:O(n)
提交代码:
class Solution {
public boolean wordBreak(String s, List<String> wordDict) {
boolean[] dp=new boolean[s.length()];
for(int i=1;i<=s.length();i++) {
for(int j=0;j<i;j++) {
String tmp=s.substring(j, i);
if(wordDict.contains(tmp)&&(j==0||dp[j-1])) {
dp[i-1]=true;
break;
}
}
}
return dp[s.length()-1];
}
}
运行结果:

本文介绍了一种使用动态规划(DP)算法解决单词拆分问题的方法,避免了回溯算法的超时问题。通过分析字符串s是否能由字典wordDict中的单词组成,采用时间复杂度为O(n^2),空间复杂度为O(n)的算法实现。
1591

被折叠的 条评论
为什么被折叠?



