当前位置: 首页 > article >正文

139. 单词拆分

刷题刷题找工作找工作,冲啊!

题目链接

. - 力扣(LeetCode)

自己的思路

 我没感觉这个跟动态规划有啥关系啊。

可以先用数组arr统计s单词里各个字母出现的情况,初始值都为-1,如果出现在相应下表数据写1.

接着遍历题目给出的workDist, 如果出现s里出现过的字母,将数据变0.

最后再遍历一下数组arr, 如果存在数据为1 的位置,说明是false;

动态规划思路

看了一下,发现我的理解有问题,这个题目是让workDist的完整单词能拼成字符串s,不能拆的,我理解错了。

有几个注意的点已经写在代码了。

class Solution {
    public boolean wordBreak(String s, List<String> wordDict) {
        //这里给的wordDict本来就List集合不是分散的数据数据类型,所以不需要Array.asList()转换成List类型
        Set<String> set = new HashSet(wordDict);

        //这个格式跟int数组是一样的,只不过类型变成Boolean
        boolean[] dp = new boolean[s.length() + 1];
        dp[0] = true;//dp[0]不放字母
        for(int i = 1; i <= s.length();  i ++){
            for(int j = 0 ; j < i ; j ++){
                //这里要从0开始而不是1始
                //因为从0开始其实就是在说现在的字符串s[0··i-1]是否是包含在hashSet里面
                //如果从1开始就略过了这种情况
                if(dp[j] && set.contains(s.substring(j,i))){//subString可以理解为符号[),右边不包
                    dp[i] = true;//存在,不是1,而是true
                    break;//只要这个s[0··i]存在可以拼接的字符就可以了,找到就进入下一个i
                }
            }
        }
        return dp[s.length()];
    }
}

这个题还是收获了很多,继续加油!


http://www.kler.cn/news/289841.html

相关文章:

  • 在线音乐播放器项目
  • Kafka【五】Buffer Cache (缓冲区缓存)、Page Cache (页缓存)和零拷贝技术
  • 五、Selenium操作指南(二)
  • 第二证券:涨停潮!传手机将使用钛金属外壳?
  • JVM(Java虚拟机)
  • 深入探索JNI:基础、最佳实践、性能优化与安全策略
  • Mental-LLM——通过在线文本数据利用大型语言模型进行心理健康预测
  • 【高级编程】实用类详解(中)String类及其常用方法 含判断邮箱格式案例
  • springboot使用缓存
  • Java实现加密(六)国密SM2算法
  • 【Qt】QChart折线图
  • ROS 编程入门
  • 集成电路学习:什么是IP知识产权
  • 本地搭建 Whisper 语音识别模型实现实时语音识别研究
  • 单线程Redis:Redis为什么这么快
  • 【html】编辑器、基础、属性、标题、段落、格式化、 连接、头部、CSS、图像
  • 微服务日常总结
  • 【主机入侵检测】Wazuh解码器之JSON解码器
  • 24并发设计模式——线程池模式
  • 台球助教系统小程序源码开发与技术解析
  • LLM大模型学习:LoRA 大模型微调的利器
  • 第三届人工智能与智能信息处理国际学术会议(AIIIP 2024)
  • 在SpringMVC中用fmt标签实现国际化/多语言
  • 装饰器模式(Decorator Pattern)
  • MACOS安装配置前端开发环境
  • 北芯生命持续亏损:产能利用率不理想仍扩产能,销售费用越来越高
  • Python世界:文件自动化备份实践
  • 由一个 SwiftData “诡异”运行时崩溃而引发的钩深索隐(一)
  • 工业交换机如何确保品质
  • glsl着色器学习(四)