单词拆分—leetcode139
给定一个非空字符串 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相关推荐
- LeetCode--139. 单词拆分(动态规划)
单词拆分(动态规划) 1. 题目描述 2. 题目分析 3. C语言实现 4. Python实现 1. 题目描述 难度:中等 2. 题目分析 这道题的难点在于示例3,字符串包含字典中的所有单词,但是就是 ...
- LeetCode 140. 单词拆分 II
文章目录 解法1:回溯 + 记忆数组,记录当前字符串 解法2:回溯 + 记忆数组,记录索引 `i` 到字符结尾的字符串能拆分的组合 https://leetcode-cn.com/problems/w ...
- 小米面试题:单词拆分
题目: 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词. 你可以假设字典中 ...
- leetcode 140. Word Break II | 140. 单词拆分 II(动态规划)
题目 https://leetcode.com/problems/word-break-ii/ 题解 由 leetcode 139. Word Break | 139. 单词拆分(动态规划) 改造而来 ...
- LeetCode 140. 单词拆分 II(DP+回溯)
1. 题目 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中.返回所有这些可能的句子. 说明: 分隔时可以重复使 ...
- LeetCode 139. 单词拆分(DP)
1. 题目 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词. 你可以假设字 ...
- leetcode - 139. 单词拆分
139. 单词拆分 -------------------------------------------- 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以 ...
- 动态规划——单词拆分(Leetcode 139)
题目选自Leetcode 139.单词拆分 问题描述: 解题思路: 怎么想到用动态规划的? 题目的相关标签中有动态规划.(QAQ) dp数组怎么选? dp[i]: 表示子串s[0:i] 是否全部能拆分 ...
- LeetCode-----第139题-----单词拆分
单词拆分 难度:中等 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词. 你 ...
最新文章
- NOIP2012 文化之旅
- 关于selecteditem.value和selecteditem.text
- 简单暴力到dp的优化(入门篇)
- 生产环境linux下安装两个及两个以上tomcat实践
- Unity3D笔记 愤怒的小鸟四 实现Selelction界面
- 使用联想Y460一键拯救系统
- 蓝牙音箱连接成功但没有声音还是电脑的声音
- YV12 and NV12
- 信息安全实验三 :PGP邮件加密软件的使用
- 2021年9月份最新数据库排行榜出炉
- Raman光谱——石墨烯表征神器
- DEDECMS专题制作
- 0002计算机组成原理与体系结构02
- 惠普103a打印机芯片清零_惠普M104a打印机的粉盒CF218A,芯片怎么取下来啊
- Linux下 “>/dev/null 2>1 “ 命令学习
- 集合(List集合、数据结构、List集合的实现类)
- 第六章——总线系统(2)
- 网上舆情如何早发现?网络舆情监测系统解决办法
- 分析黑客入侵 PostgreSQL 数据库
- 辅修计算机的机械专业大二同学的跨考准备
热门文章
- mysql 导入sql脚本_mysql 导入 sql文件
- sap 标准委外和工序委外_「SAP技术」SAP MM 委外加工采购流程里副产品的收货
- 【AtCoder】AGC034
- Random类、String类的一些常用方法
- git 使用详解(3)—— 最基本命令 + .gitignore 文件
- 使用预编译头提高编译速度
- 这些东西,你知道吗?是否忘记了
- 编写高性能Web应用程序的10个技巧
- Day14作业 一、完成下面的要求? 	先创建一个工人类,属性:姓名,年龄,工资
- 16g版nexus5 升级带android 4.4,Nexus 5升级如何Android 4.4.1 Nexus 5升级到4.4.1方法教程