139. 单词拆分
完全背包
import java.util.List;
class Solution {
public boolean wordBreak(String s, List<String> wordDict) {
/**
* dp[j]定义为长度为j的字符串是否可以由字典中的子串组成,即[0, j - 1]区间的子串
*/
boolean[] dp = new boolean[s.length() + 1];
dp[0] = true;
for (int j = 1; j < s.length() + 1; j++) {
for (int i = 0; i < j; i++) {
/**
* 如果dp[i],即前i - 1个字符串可以由字典组成
* 且[i, j - 1]范围的子串也在字典中,则[0, j - 1]区间满足条件
*/
if (dp[i] && wordDict.contains(s.substring(i, j))){
dp[j] = true;
}
}
}
return dp[s.length()];
}
}
/**
* 时间复杂度 O(n^2)
* 空间复杂度 O(n)
*/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端