文章目录

  • 题目描述
  • 思路 & 代码
    • 二刷更新

题目描述

  • 漏网之题。。一个月前写的居然没写博客

思路 & 代码

  • HashSet 存储 word,便于查询
  • 动态规划三要素在注释中
  • 思路:如果dp[j] = true且[j+1,i]可以组成单词,则dp[i] == true
class Solution {// 判断当前字符串能否被word组成public boolean wordBreak(String s, List<String> wordDict) {// dp,dp[i]代表[0,i-1]的子字符串能否被完整拆分// dp[i]如何判定?用j划分[0,j][j+1,i],如果dp[j] = true且[j+1,i]可以组成单词,则dp[i] == trueint len = s.length();boolean[] dp = new boolean[len + 1];// 建立一个哈希表,方便查找是否存在Set<String> set = new HashSet();for(int i = 0; i < wordDict.size(); i++){set.add(wordDict.get(i));}// 为了边界,默认空字符串为truedp[0] = true;for(int i = 1; i <= len; i++){for(int j = 0; j <= i; j++){// 状态转移方程:可以组成的情况// 最优子结构:dp[j]if(dp[j] && set.contains(s.substring(j,i))){dp[i] = true;break;}}}return dp[len];}
}

二刷更新

  • 最优子结构:前面的子串结果
  • 当前转移:前面某子串满足,而且剩下的子串也在 Set 内
class Solution {public boolean wordBreak(String s, List<String> wordDict) {Set<String> set = new HashSet<>();for(String temp : wordDict) {set.add(temp);}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] && set.contains(s.substring(j, i))) {dp[i] = true;break;}}} return dp[s.length()];}
}

【LeetCode笔记】139. 单词拆分(Java、动态规划、字符串、哈希表)相关推荐

  1. leetcode 139. Word Break | 139. 单词拆分(动态规划)

    题目 https://leetcode.com/problems/word-break/ 题解 时隔一天,再次遇到 dp 问题- 本题和 leetcode 375. Guess Number High ...

  2. 139. 单词拆分 ——【Leetcode每日一题】

    139. 单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典.请你判断是否可以利用字典中出现的单词拼接出 s . 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重 ...

  3. leetcode - 139. 单词拆分

    139. 单词拆分 -------------------------------------------- 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以 ...

  4. Leetcode 139. 单词拆分

    Leetcode 139. 单词拆分 1.问题分析 2.问题解决 3.总结 1.问题分析 题目链接:https://leetcode-cn.com/problems/word-break/   本质上 ...

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

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

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

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

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

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

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

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

  9. 实操案例:字符串哈希表操作

    有考C语言可信编程认证的同事经常会问到,C语言库没有字符串哈希表操作,那考试遇到了怎么办.虽然历次考试的题目中没有必须要用到C语言哈希表的题目(至少我都能用常规C做出来),但是还需要防患未然,这里给出 ...

最新文章

  1. boost::property_tree
  2. Mint17 FireFox重装英文版问题
  3. caffe python接口_ubuntu配置caffe的python接口pycaffe
  4. 在Sharepoint 2007 整合Discuz Nt论坛
  5. 面向对象的JavaScript编程
  6. linux系统回收站功能的实现
  7. struts2中s:select标签在freemarker中的使用
  8. 如何创建生成非 MFC 项目的自定义 AppWizards
  9. 志邦橱柜坑爹,志邦橱柜大忽悠,志邦橱柜欺骗
  10. 控制台应用和空项目有什么区别_在公司做的项目和自己在学校做的有什么区别?...
  11. Ising模型(伊辛模型)
  12. 浅析刚参加工作的大学生的心理态势
  13. win7无法连接WIFI,安装无线驱动 AR9485 WIFI Driver for Windows 7 (32-bit, 64-bit)
  14. Adobe Photoshop 2021 22.4.3 中英文+Neural Filters 含神经滤镜 下载
  15. WINDOWS系统进程查询
  16. 计算机开机配置失败6,win7开机配置windows update失败怎么跳过?-win7配置update失败,安全模式还是配置失败...
  17. 《OpenGL ES 3.x游戏开发(下卷)》一2.1 飘扬的旗帜
  18. 掌阅科技净利大增却遇跌停?到底是有利好还是利空?
  19. POI设置Excel下拉列表(数据有效性验证)
  20. 数据仓库建模方法/范式建模法/维度建模法/事实表/维度表/优缺点/建模流程/概念建模/逻辑建模/物理建模

热门文章

  1. Java中关于自增自减
  2. linux日志添加到文件,关于linux:将变量中的内容追加到日志文件中
  3. 什么是java dom_java web--DOM
  4. TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
  5. 泸西一中2021高考成绩查询,云南红河州四所好高中,红河州一中一本率领先,建水一中不容小觑...
  6. python rgb led控件_用树莓派实现RGB LED的颜色控制——Python版本
  7. C++ auto_ptr存在的问题
  8. win10下安装node
  9. Python 生成器 和 yield 关键字
  10. Java消息服务~消息属性