题目

给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。

说明:
1、拆分时可以重复使用字典中的单词。
2、你可以假设字典中没有重复的单词。

示例 :
输入: s = “leetcode”, wordDict = [“leet”, “code”]
输出: true
解释: 返回 true 因为 “leetcode” 可以被拆分成 “leet code”。

注意点

1、动态方程dp[n] :表示前n个字符串是否可以用字典中的单词表示;(比如:dp[0]表示空字符串是否可以用字典中的单词表示)
2、初始化动态规划方程;(dp[0]为true,其他默认为false)
3、更新动态规划方程

  • 从头开始遍历非空字符串 s ;
  • 判断从0(dp[0])开始的的某段字符串是否可以用字典中的单词表示;
    1、不能表示,则继续寻找,直到字符串s遍历结束;
    2、可以表示,则更新动态规划方程,并更新起点。(比如:遍历到 leetcode 的 t,则更新dp[4] = true,开始节点更新为s.subString(4, j)(字符c))

实现

    public boolean wordBreak(String s, List<String> wordDict) {// 将字典更新为set类型,便于判断单词是否在字典中Set<String> wordDictSet = new HashSet<>(wordDict);// 初始化动态规划方程boolean[] dp = new boolean[s.length() + 1];// 第一位默认true(表示空单词在字典中)dp[0] = true;// 遍历更新动态规划方程for (int i = 1; i <= s.length(); i ++) {for (int j = 0; j < i; j ++) {// 判断某一段单词是否在字典中if (dp[j] && wordDictSet.contains(s.substring(j, i))) {// 存在,则将标志位设置为truedp[i] = true;// 寻找下一段是否在字典中break;}}}// 返回结果return dp[s.length()];}

单词拆分(动态规划)相关推荐

  1. LeetCode 139. 单词拆分(动态规划)

    题目描述 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词. 你可以假设字典 ...

  2. 101. Leetcode 139. 单词拆分 (动态规划-完全背包)

    步骤一.确定状态: 确定dp数组及下标含义 dp[j]表示的是长度为j的字符串(容量为j的背包)能否被拆分成1个或者多个单词 里面的值, 所以这里的dp[j]非1即0 步骤二.推断状态方程: if d ...

  3. leetcode 140. Word Break II | 140. 单词拆分 II(动态规划)

    题目 https://leetcode.com/problems/word-break-ii/ 题解 由 leetcode 139. Word Break | 139. 单词拆分(动态规划) 改造而来 ...

  4. LeetCode--139. 单词拆分(动态规划)

    单词拆分(动态规划) 1. 题目描述 2. 题目分析 3. C语言实现 4. Python实现 1. 题目描述 难度:中等 2. 题目分析 这道题的难点在于示例3,字符串包含字典中的所有单词,但是就是 ...

  5. 动态规划——单词拆分(Leetcode 139)

    题目选自Leetcode 139.单词拆分 问题描述: 解题思路: 怎么想到用动态规划的? 题目的相关标签中有动态规划.(QAQ) dp数组怎么选? dp[i]: 表示子串s[0:i] 是否全部能拆分 ...

  6. 代码随想录算法训练营第46天 | 动态规划 part08 ● 139.单词拆分 ● 关于多重背包 ● 背包问题总结篇

    #139 单词拆分 没做出来.我原来是把string放到dp里,不对,这种做法永远都不对.他问的是什么(能不能构成,true,false)就要放到dp里 (大部分题是这样)下面是不对的思路: 正确co ...

  7. 代码随想录算法训练营day46 | 动态规划之背包问题 139.单词拆分

    day46 139.单词拆分 1.确定dp数组以及下标的含义 2.确定递推公式 3.dp数组如何初始化 4.确定遍历顺序 5.举例推导dp[i] 139.单词拆分 题目链接 解题思路:单词就是物品,字 ...

  8. 代码随想录算法训练营第五十天|动态规划:139.单词拆分、多重背包理论基础、背包问题总结

    [139.单词拆分] 这个题目是一个背包问题.但是他稍微有点不太一样.在于这题判断能否装满背包是在判断单词是否出现在字典中,如果出现,就代表能装满. 背包是长度为i的字符串 物品是长度为i-j的子串 ...

  9. 小米面试题:单词拆分

    题目: 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词. 你可以假设字典中 ...

  10. 单词拆分—leetcode139

    给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词. 你可以假设字典中没有重复 ...

最新文章

  1. MariaDB 10的复制 集群 高可用搭建 大表拆分【持续更新中】
  2. DeDeCMS后台批量修改替换sql语句大全
  3. [转载] Python中字符串的处理方法
  4. 第三百八十一节,Django+Xadmin打造上线标准的在线教育平台—xadmin全局配置
  5. mysql pt kill脚本_mysql 案例 ~ pt-kill工具的使用
  6. ai背景合成_视频素材不好找!图片也能生成视频啦,AI剪辑助力原创短视频创作...
  7. Excel图表如何更改坐标轴最大值
  8. PHP汉字转化为拼音
  9. Theano入门神经网络(一)
  10. 中国正从法律入手编织公民信息保护网
  11. 期货公司开户实力经纪业务的规模
  12. 稳压二极管原理、参数、动态电阻特性
  13. 深度置信(信念)网络DBN(Deep Belief Network)
  14. 喝酒神器微信小程序源码 支持流量主解锁多人对战
  15. 观影感受 之 《都挺好》
  16. centOS7下实践查询版本/CPU/内存/硬盘容量等硬件信息
  17. DFS and BFS
  18. 6.stm32 低功耗设计--总结
  19. 2.爬虫之xpath选择器selenium模块
  20. DEAP dataset数据集 SEED dataset数据集

热门文章

  1. Unity3d 根据布线,自动生成碰撞墙
  2. java 51_学习java第51天
  3. node爬取app数据_从零开始写一个node爬虫(上)—— 数据采集篇
  4. 万字长文带你轻松了解LSTM全貌
  5. 在线打包app平台以及流程平台分析(AndroidiOS)
  6. 2022-2028全球与中国陆地和海洋测绘市场现状及未来发展趋势
  7. 【word】双栏写作如何调整为写满左栏再写右栏
  8. PHPWAMP站点管理的“域名模式”和“端口模式”详解、均支持自定义
  9. STM32学习笔记1(初识STM32)
  10. 如何实现gerrit的垃圾回收功能