题目描述:

方法一:动态规划 O(n^2) O(n)

class Solution: def wordBreak(self, s: str, wordDict: List[str]) -> bool: maxlen=0 for word in wordDict: if len(word)>maxlen: maxlen=len(word) res=[0]*len(s) for i in range(len(s)): p=i while(p>=0 and i-p<=maxlen): # 两个条件 if (res[p]==1 and s[p+1:i+1] in wordDict) or (p==0 and s[p:i+1] in wordDict): res[i]=1 break p-=1 return True if res[-1]==1 else False

另:

class Solution: def wordBreak(self, s: str, wordDict: List[str]) -> bool: arr,wordSet=[0],set(wordDict) for i in range(len(s)): for j in arr[::-1]: if s[j:i+1] in wordSet: arr.append(i+1) break return arr[-1]==len(s)

方法二:记忆化回溯

方法三:宽度优先搜索

转载于:https://www.cnblogs.com/oldby/p/11197397.html

leetcode-139-单词拆分相关推荐

  1. Leetcode 139. 单词拆分

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

  2. leetcode - 139. 单词拆分

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

  3. LeetCode 139. 单词拆分(DP)

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

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

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

  5. [leetcode]139. 单词拆分

    1.递归+备忘录 class Solution {string s;vector<string> wordDict;unordered_set<string>m_set;vec ...

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

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

  7. LeetCode 140. 单词拆分 II(DP+回溯)

    1. 题目 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中.返回所有这些可能的句子. 说明: 分隔时可以重复使 ...

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

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

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

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

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

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

最新文章

  1. C# FTp 上传,下载
  2. Django-RQ介绍
  3. java五层架构_Web五层架构
  4. Linux 查找进程与结束进程
  5. 虚拟机 linux 盘分小了,增加虚拟机硬盘分区大小
  6. 前端项目:基于Nodejs+vue开发实现酒店管理系统
  7. Delphi POS打印的处理
  8. PVID和VID的理解
  9. [dp][思维]Paranoid String CF1694B
  10. HDU 1224(动态规划)
  11. 【软考】下午题 解题思路总结
  12. nginx隐藏 X-Powered-By HTTP头
  13. 激活windiws10家庭版
  14. 技术与经济之六:现代化的陷阱
  15. centos7安装ZipArchive
  16. 初三计算机课程试题,中考信息技术试题
  17. Windows 11 win to go 安装硬盘无法启动解决方法之一
  18. 【51单片机】串口通信/LED点阵
  19. 数学不好能不能学好编程?
  20. TensorFlow学习笔记——(3)TF2常用函数

热门文章

  1. CF682C Alyona and the Tree
  2. 【笔试题】简单的两道笔试题(1、打印杨辉三角;2、三个数排序)
  3. unity(2017.3) C# 常用API
  4. InSAR 处理软件
  5. 24、JSON与OC互相转化
  6. 用计算机答题答案提交后能否改错,南京晓庄计算机操作系统习题库含答案全1-5章...
  7. java类的讲解_【java 基础】java类的权限讲解
  8. python语言特点依赖平台吗_python语言的特点
  9. P1141 01迷宫(BFS+记忆化)
  10. 插入函数c语言,线性表的插入函数