力扣 单词拆分

动态规划,字符串截取,可重复用,集合类。

题目

单词可以重复使用,一个单词可用多次,应该是比较灵活的组合形式了,可以想到用dp,遍历完单词后的状态的返回值。而这里的wordDict给出的是list,但可以用set,因为hashset可以去重,hashset的查找比list要快。然后就是这里的额dp数组是个boolean值,然后用截取字符串的形式去看set里能不能找到,找不到说明拼不了。

时间复杂度:O(n^2) ,空间复杂度:O(n) 。

java 复制代码
public class Solution {
    public boolean wordBreak(String s, List<String> wordDict) {
        Set<String> w = new HashSet(wordDict);
        boolean[] dp = new boolean[s.length() + 1];
        dp[0] = true;
        for (int i = 1; i <= s.length(); i++) {
            for (int j = 0; j < i; j++) {
                if (dp[j] && w.contains(s.substring(j, i))) {
                    dp[i] = true;//能找到
                    break;
                }
            }
        }
        return dp[s.length()];//遍历到最后一个字符时这个单词的状态
    }
}

状态维护,boolean类型很适合做标记位。

相关推荐
技术小泽3 分钟前
算法基础之排序算法大总结1!!
java·数据结构·后端·算法·排序算法
illus10n_CHOU12 分钟前
【项目总结】易到家家政服务平台 —— 派单调度(7)
java·spring boot·后端·学习·设计模式
云卓SKYDROID33 分钟前
无人机之无线传输技术!
科技·算法·无人机·科普·云卓科技
蓝色洛特1 小时前
【matlab优化算法-17期】基于DBO算法的微电网多目标优化调度
开发语言·算法·matlab
天天进步20151 小时前
Java全栈项目实战:在线课程评价系统开发
java·开发语言
豆豆酱1 小时前
强化学习到大模型训练理论概要(三)
算法
new6669992 小时前
Java实现模版方法模式
java·设计模式
Zaralike2 小时前
Quartz定时任务
java
fly spider2 小时前
Java 中 ArrayList 和 LinkedList 有什么区别?
java·开发语言·集合
m0_748255262 小时前
【JSqlParser】Java使用JSqlParser解析SQL语句总结
java·开发语言·sql