给定一个非空字符串 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

思路: 动态规划,假设dp[i]表示字符串s的前i个字符是否满足单词拆分条件,满足的条件有两个

1、存在dp[j]=true, j=0~i

2、且s.substr(j,i-j)能在字典中找到

注:满足以上两个条件后,dp[i]=true,然后就可以break掉了

class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {int n = s.length();vector<bool> dp(n+1,false);dp[0] = true;unordered_set<string> string_vec(wordDict.begin(), wordDict.end());for(int i=1;i<=n;++i){for(int j=0;j<i;++j){string temp = s.substr(j,i-j);if(dp[j] && string_vec.count(temp)){dp[i] = true;break;}}}   return dp[n];}
};

单词拆分—leetcode139相关推荐

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

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

  2. LeetCode 140. 单词拆分 II

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

  3. 小米面试题:单词拆分

    题目: 给定一个非空字符串 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)

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

  9. LeetCode-----第139题-----单词拆分

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

最新文章

  1. NOIP2012 文化之旅
  2. 关于selecteditem.value和selecteditem.text
  3. 简单暴力到dp的优化(入门篇)
  4. 生产环境linux下安装两个及两个以上tomcat实践
  5. Unity3D笔记 愤怒的小鸟四 实现Selelction界面
  6. 使用联想Y460一键拯救系统
  7. 蓝牙音箱连接成功但没有声音还是电脑的声音
  8. YV12 and NV12
  9. 信息安全实验三 :PGP邮件加密软件的使用
  10. 2021年9月份最新数据库排行榜出炉
  11. Raman光谱——石墨烯表征神器
  12. DEDECMS专题制作
  13. 0002计算机组成原理与体系结构02
  14. 惠普103a打印机芯片清零_惠普M104a打印机的粉盒CF218A,芯片怎么取下来啊
  15. Linux下 “>/dev/null 2>1 “ 命令学习
  16. 集合(List集合、数据结构、List集合的实现类)
  17. 第六章——总线系统(2)
  18. 网上舆情如何早发现?网络舆情监测系统解决办法
  19. 分析黑客入侵 PostgreSQL 数据库
  20. 辅修计算机的机械专业大二同学的跨考准备

热门文章

  1. mysql 导入sql脚本_mysql 导入 sql文件
  2. sap 标准委外和工序委外_「SAP技术」SAP MM 委外加工采购流程里副产品的收货
  3. 【AtCoder】AGC034
  4. Random类、String类的一些常用方法
  5. git 使用详解(3)—— 最基本命令 + .gitignore 文件
  6. 使用预编译头提高编译速度
  7. 这些东西,你知道吗?是否忘记了
  8. 编写高性能Web应用程序的10个技巧
  9. Day14作业 一、完成下面的要求? 先创建一个工人类,属性:姓名,年龄,工资
  10. 16g版nexus5 升级带android 4.4,Nexus 5升级如何Android 4.4.1 Nexus 5升级到4.4.1方法教程