单词拆分java与填表法_139. 单词拆分
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. 单词拆分相关推荐
- 用记忆法记忆单词的M种方法 吴天胜
第一种方法:拆分――把单词拆分为几个小的部分. 举例: 1 , hesitate ――犹豫 分析: he ――他: sit ――坐: ate ――吃( eat )的过去式. 记忆:他犹豫地坐着吃. 2 ...
- 计算机英语背单词技巧,闽教小学英语快速单词记忆法,怎么背单词下午、计算机、教室、长颈鹿、请...
原标题:闽教小学英语快速单词记忆法,怎么背单词下午.计算机.教室.长颈鹿.请 同学们好,我是林老师,欢迎大家和老师一起轻松有趣快速记单词. 单词记忆方法技巧,深圳小学英语记单词的诀窍.如何记忆单词下午 ...
- 随机产生单词java_关于java:如何创建随机单词选择器方法
我对JAVA很新,只是学习而已.我正在做一个Java任务,我不太明白,我应该创建一个方法,它将接收一个字符串数组,并从数组中返回一个随机选择的STATE.具体说明如下:*getrandomword-- ...
- Java暑期实训任务二——单词检测程序
实训内容:模仿"百词斩"手机App,设计并用Java语言实现一个"百词斩"图形界面程序(根据自己的能力,可以适当地增加或删除部分功能). 最低要求: (1)事先 ...
- 详解【java实现】编写一个程序,从键盘读入一段英文(多行),找出其中所有的英文单词,统计每个单词出现的次数,并按照单词出现次数由大到小排序后输出。
题目: 编写一个程序,从键盘读入一段英文(多行),找出其中所有的英文单词,统计每个单词出现的次数,并按照单词出现次数由大到小排序后输出. 前言: "统计每个单词出现的次数,并且按照由大到小排 ...
- java背单词软件_背单词的java小软件
[实例简介] 这是我写的背单词的一个软件,自己输入单词,然后可以有挑战模式,在规定时间内输入单词,比较有意思,练手不错 [实例截图] [核心代码] 单词背背背 └── 单词背背背 ├── bin │ ...
- 使用Java统计英文文章的单词频率。
spark中的入门级程序:WordCount.这次不是使用spark来完成的,而是使用原生的Java API.只要英文文章符合书写的规定,那么这个程序就没有什么问题. 先将指定文件中的内容读取到Str ...
- Java程序员必背单词
Java程序员必背单词 1.routput输出 2.math数学 3.try试图 4.catch抓住 5.throws抛出 6.abstract抽象 7.iterator迭代器 8.public公众的 ...
- LeetCode-算法-拼接单词
力扣题目地址:https://leetcode-cn.com/problems/find-words-that-can-be-formed-by-characters/ 首先看题目: 给你一份『词汇表 ...
最新文章
- git 合并两个分支的某个文件
- python 易错总结
- HDU1162(Prim算法)
- android5.1和ios差距,Android 5.1和IOS运行流畅度比较Android获胜!
- 《Groovy语言规范》-语法(三)
- OAF_开发系列21_实现OAF事物控制TransactionUnitHelper(案例)
- mysql recovery = 4_强制MySQL InnoDB恢复参数innodb_force_recovery
- 字节跳动冬令营报名启动,邀你一起备战ICPC世界总决赛!
- scut协议配置工具初始化的一些问题
- 阿里云运行python项目_荐个人博客开发-06:Nginx + uWSGI + Django项目部署到阿里云服务器运行...
- 算法导论5.1 雇用问题
- ios 原子属性atomic加锁性能与锁对比, 不推荐的原因
- JAVA映射文件到内存,java之内存映射文件
- 小白教程系列——C盘满了,将C盘扩容
- 什么是大型机和小型机
- 坐标上海,我看见这群开发者用热爱改变世界
- 国际十大炒黄金期货正规平台排名(2023精选榜)
- Eclipse SWT 创建项目(一)
- 输入一段英文字符,统计每个小写字母的出现次数
- Multisim 非门