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

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

示例 1:

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

示例 2:

输入: s = “applepenapple”, wordDict = [“apple”, “pen”]
输出: true
解释: 返回true 因为 “applepenapple” 可以被拆分成 “apple pen apple”。注意你可以重复使用字典中的单词。

示例 3:

输入: s = “catsandog”, wordDict = [“cats”, “dog”, “sand”, “and”, “cat”]
输出: false

解题方案:动态规划

//单词拆分
//wordDict  单词字典
//dp[i] 表示前一个字符能否被拆分成功字典中出现的单词
//s 是源字符串
func wordBreak(s string, wordDict []string) bool {//定义一个mapwordDictSet := make(map[string]bool)for _, w := range wordDict {wordDictSet[w] = true   //key是每个单词}dp := make([]bool, len(s) + 1)dp[0] = truefor i := 1; i <= len(s); i++ {for j := 0; j < i; j++ {if dp[j] && wordDictSet[s[j:i]] {dp[i] = truebreak}}}return dp[len(s)]
}

依次遍历0~i之间的字符串,每次判断0~i之间的字符串是否满足字典里面的要求。d[j]保留了前j字符对应的状态,wordDictSet[s[j:i]]为最后一个字符串的状态,最后一个字符串前面所有的字符串都可以通过d[j]来判断是否满足条件。
如果有匹配,则返回对应dp下标对应的状态。

时间复杂度:O(n^2)
空间复杂度:O(n)

参考地址:https://leetcode-cn.com/problems/word-break/solution/dan-ci-chai-fen-by-leetcode-solution/

小米面试题:单词拆分相关推荐

  1. 大数据学长面试-------小米面试题

    小米面试题 学长1 大家可以投一下小米的推荐算法. 一面:问两个有序大数组合并成一个数组的最佳方法,还有快排,问了所有项目. 二面:是问推荐算法的业务实现,还有如果你自己做一个推荐,你会怎么选择模型. ...

  2. LeetCode 140. 单词拆分 II

    文章目录 解法1:回溯 + 记忆数组,记录当前字符串 解法2:回溯 + 记忆数组,记录索引 `i` 到字符结尾的字符串能拆分的组合 https://leetcode-cn.com/problems/w ...

  3. 单词拆分—leetcode139

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

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

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

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

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

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

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

  7. leetcode - 139. 单词拆分

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

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

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

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

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

最新文章

  1. 关于StreamReader的构造函数
  2. 容器可以作为全局变量吗_四季青是风水树吗?哪些可以作为风水树?
  3. AUTOSAR从入门到精通100讲(十四)-一文详解CAN总线错误帧
  4. hadoop eclipse windows
  5. python编写抢座位软件_程序员硬核Python抢票教程”,帮你抢回家车票
  6. JAVA设置流中当前位置_java文件流的问题!急
  7. IDEA 打包可执行 jar 包
  8. 第一章 时间序列基础知识
  9. 老板口中的一区二区是什么意思?
  10. RT-Thread与cubemx|74HC595驱动数码管详解
  11. DirectX修复工具 4.0 标准版
  12. 缺陷管理工具JIRA和禅道对比
  13. 土地购买(bzoj 1597)
  14. ERROR: ld.so: object ‘/usr/local/lib/libc2.28.so‘ from /etc/ld.so.preload cannot be preloaded ...
  15. android unity 瘦身,unity/unity3d编译成android apk包瘦身方法
  16. 修改smartbi的JVM调优
  17. 虚拟机VMware安装苹果系统macOS,超级详细教程,附文件下载,真教程!!
  18. 注水、占坑、瞎掰:起底机器学习学术圈的那些“伪科学”(附链接)
  19. 使用单片机的串口蓝牙通信写的接收SBUF里的数据,并进行发送执行命令,显示在数码管上,波特率9600
  20. 深度相机原理揭秘之3D结构光Sensor(iPhone X、小米8探索版、OPPO Find)

热门文章

  1. 【数据挖掘】神经网络 后向传播算法( 向后传播误差 | 输出层误差公式 | 隐藏层误差公式 | 单元连接权值更新公式 | 单元偏置更新公式 | 反向传播 | 损失函数 | 误差平方和 | 交叉熵 )
  2. 【数据挖掘】数据挖掘简介 ( 数据挖掘引入 | KDD 流程 | 数据源要求 | 技术特点 )
  3. windows上安装gcc/g++环境(MinGW,msys64等)
  4. jar - 操作jar包的工具
  5. 远程桌面连接mstsc 超扎心
  6. Hibernate中的Entity类之间的继承关系之一MappedSuperclass
  7. macOS下加载动态库dylib报code signature invalid错误的解决办法
  8. 关于子网划分—为什么全0全1子网号不能使用
  9. LeetCode: Unique Binary Search Trees [095]
  10. 【转】如何选好Android开发书籍和教程[总结]