image.png

image.png

思考

这题有点类似回文子串的题 肯定是得双指针的 但是由于是整个字符串 左指针指着头前面不能动了 我们只考察右边 也就变成了一维的问题 dp[j]=True表示s下标0到下标j-1代表的字串可以被表示为单词,为0反之,那么如果dp[len(s)]=True就说明s整个可以表示为单词组

这样做因为不知道一个单词会有多长 需要从之前的地方遍历过来

dp[i][j] = max(dp[i][k] and s[k]-s[j] in dict) 对于所有的0<=k

或者考虑剪枝 先遍历一遍dict看看最短单词长度和最长单词长度分别是多少 然后根据这个区间 去遍历之前的dp数组

实现

class Solution:

def wordBreak(self, s: str, wordDict: List[str]) -> bool:

#这题有点类似回文子串的题 肯定是得双指针的 dp[i]=1表示s下标0到下标i-1代表的字串可以被表示为单词,为0反之,那么如果dp[len(s)-1]=True就说明s整个可以表示为单词组

#这样做因为不知道一个单词会有多长 需要枚举分界点

#dp[i] = max(dp[k] and s[k+1]-s[j] in dict) 对于所有的0<=k

#或者考虑剪枝 先遍历一遍dict看看最短单词长度和最长单词长度分别是多少 然后根据这个区间 去遍历之前的dp数组

# 不能相信题目的非空

if not s or not wordDict:

return False

s_len = len(s)

# 遍历 worddict 求出单词的最小长和最大长

word_min_len,word_max_len = len(wordDict[0]),len(wordDict[0])

for item in wordDict:

if len(item)

word_min_len = len(item)

if len(item)>word_max_len:

word_max_len =len(item)

dp = [False]*(s_len+1)

dp[0]=True

for i in range(1,s_len+1):

for j in range(0,i):

if i-jword_max_len:

dp[i]=False or dp[i]

continue

dp[i] = dp[i] or (dp[j] and s[j:i] in wordDict)

return dp[s_len]

单词拆分java与填表法_139. 单词拆分相关推荐

  1. 用记忆法记忆单词的M种方法 吴天胜

    第一种方法:拆分――把单词拆分为几个小的部分. 举例: 1 , hesitate ――犹豫 分析: he ――他: sit ――坐: ate ――吃( eat )的过去式. 记忆:他犹豫地坐着吃. 2 ...

  2. 计算机英语背单词技巧,闽教小学英语快速单词记忆法,怎么背单词下午、计算机、教室、长颈鹿、请...

    原标题:闽教小学英语快速单词记忆法,怎么背单词下午.计算机.教室.长颈鹿.请 同学们好,我是林老师,欢迎大家和老师一起轻松有趣快速记单词. 单词记忆方法技巧,深圳小学英语记单词的诀窍.如何记忆单词下午 ...

  3. 随机产生单词java_关于java:如何创建随机单词选择器方法

    我对JAVA很新,只是学习而已.我正在做一个Java任务,我不太明白,我应该创建一个方法,它将接收一个字符串数组,并从数组中返回一个随机选择的STATE.具体说明如下:*getrandomword-- ...

  4. Java暑期实训任务二——单词检测程序

    实训内容:模仿"百词斩"手机App,设计并用Java语言实现一个"百词斩"图形界面程序(根据自己的能力,可以适当地增加或删除部分功能). 最低要求: (1)事先 ...

  5. 详解【java实现】编写一个程序,从键盘读入一段英文(多行),找出其中所有的英文单词,统计每个单词出现的次数,并按照单词出现次数由大到小排序后输出。

    题目: 编写一个程序,从键盘读入一段英文(多行),找出其中所有的英文单词,统计每个单词出现的次数,并按照单词出现次数由大到小排序后输出. 前言: "统计每个单词出现的次数,并且按照由大到小排 ...

  6. java背单词软件_背单词的java小软件

    [实例简介] 这是我写的背单词的一个软件,自己输入单词,然后可以有挑战模式,在规定时间内输入单词,比较有意思,练手不错 [实例截图] [核心代码] 单词背背背 └── 单词背背背 ├── bin │  ...

  7. 使用Java统计英文文章的单词频率。

    spark中的入门级程序:WordCount.这次不是使用spark来完成的,而是使用原生的Java API.只要英文文章符合书写的规定,那么这个程序就没有什么问题. 先将指定文件中的内容读取到Str ...

  8. Java程序员必背单词

    Java程序员必背单词 1.routput输出 2.math数学 3.try试图 4.catch抓住 5.throws抛出 6.abstract抽象 7.iterator迭代器 8.public公众的 ...

  9. LeetCode-算法-拼接单词

    力扣题目地址:https://leetcode-cn.com/problems/find-words-that-can-be-formed-by-characters/ 首先看题目: 给你一份『词汇表 ...

最新文章

  1. git 合并两个分支的某个文件
  2. python 易错总结
  3. HDU1162(Prim算法)
  4. android5.1和ios差距,Android 5.1和IOS运行流畅度比较Android获胜!
  5. 《Groovy语言规范》-语法(三)
  6. OAF_开发系列21_实现OAF事物控制TransactionUnitHelper(案例)
  7. mysql recovery = 4_强制MySQL InnoDB恢复参数innodb_force_recovery
  8. 字节跳动冬令营报名启动,邀你一起备战ICPC世界总决赛!
  9. scut协议配置工具初始化的一些问题
  10. 阿里云运行python项目_荐个人博客开发-06:Nginx + uWSGI + Django项目部署到阿里云服务器运行...
  11. 算法导论5.1 雇用问题
  12. ios 原子属性atomic加锁性能与锁对比, 不推荐的原因
  13. JAVA映射文件到内存,java之内存映射文件
  14. 小白教程系列——C盘满了,将C盘扩容
  15. 什么是大型机和小型机
  16. 坐标上海,我看见这群开发者用热爱改变世界
  17. 国际十大炒黄金期货正规平台排名(2023精选榜)
  18. Eclipse SWT 创建项目(一)
  19. 输入一段英文字符,统计每个小写字母的出现次数
  20. Multisim 非门

热门文章

  1. Vue实现百度下拉提示搜索
  2. SLF4J及其MDC详解
  3. 分享郑州买房后转LPR贷款利率带来的效益
  4. 等差数列java_java简单的编程(等差数列)
  5. macbook系统占用硬盘大_mac book pro 系统占用的硬盘空间太大怎么办?
  6. 复选框实现。全选、全不选、多选
  7. G2评选ManageEngine为UEM的高效执行者和创新领导者
  8. Java模板设计模式
  9. Linux GCC 常用命令
  10. Linux C语言代码风格