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

1. 题目

给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。

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

示例 1:
输入:
s = "catsanddog"
wordDict = ["cat", "cats", "and", "sand", "dog"]
输出:
["cats and dog","cat sand dog"
]示例 2:
输入:
s = "pineapplepenapple"
wordDict = ["apple", "pen", "applepen", "pine", "pineapple"]
输出:
["pine apple pen apple","pineapple pen apple","pine applepen apple"
]
解释: 注意你可以重复使用字典中的单词。示例 3:
输入:
s = "catsandog"
wordDict = ["cats", "dog", "sand", "and", "cat"]
输出:
[]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/word-break-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. DP+回溯

相关题目:LeetCode 139. 单词拆分(DP)

  • 先在139题的基础上,判断单词是否可以拆分
  • 如果可以的话,进行回溯,暴力查找所有可能
class Solution {
public:vector<string> wordBreak(string s, vector<string>& wordDict) {int i, j, n = s.size();unordered_set<string> set(wordDict.begin(), wordDict.end());bool dp[n+1] = {false};//dp[j]包含第j个字符为结尾的字符能否拆分dp[0] = true;//空字符能拆分for(i = 0; i <= n; ++i){if(dp[i] == true)//左半边存在for(j = i+1; j <= n; ++j){if(set.count(s.substr(i,j-i)))dp[j] = true;}}if(dp[n] == true)//整个字符串可以拆{vector<string> ans;string str;int end = 1;while(end <= n && dp[end] != 1)end++;//找到下一个可拆点bt(s,set,dp,ans,str,0,end);return ans;}elsereturn {};//不能拆,返回空}void bt(string &s, unordered_set<string> &set, bool *dp, vector<string> &ans,string str, int start, int end){if(start >= end)return;string temp = s.substr(start,end-start);//[s,e]的字符bool inSet = set.count(temp);//该字符在set集合中if(end == s.size())//取到最后字符了{if(inSet)ans.push_back(str+temp);//将前缀和当前组合,加入答案return;}int next = end+1;while(next <= s.size() && dp[next] != 1)next++;//找下一个分割点bt(s,set,dp,ans,str,start,next);//不插入空格,start不变,end变下一个if(inSet)//字符在集合中,才能加空格bt(s,set,dp,ans,str+temp+" ",end,next);//start变end,end变next}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝|简单高效的知识图谱表示学习负样本采样方法

笔记整理 | 陈名杨&#xff0c;浙江大学在读博士生&#xff0c;主要研究方向为知识图谱表示学习Introduction研究知识图谱表示学习&#xff08;KnowledgeGraph Embedding&#xff09;可以解决当前很多应用的基本问题&#xff0c;这些方法旨在将知识图谱中的实体&#xff08;Ent…

常见性能优化策略的总结

本文要感谢我职级评定过程中的一位评委&#xff0c;他建议把之前所做的各种性能优化的案例和方案加以提炼、总结&#xff0c;以文档的形式沉淀下来&#xff0c;并在内部进行分享。力求达到如下效果&#xff1a; 1. 形成可实践、可借鉴、可参考的各种性能优化的方案以及选型考虑…

微软中山大学开源超强的视觉位置编码,涨点显著

文 | 小马源 | 极市平台1.写在前面由于Transformer对于序列数据进行并行操作&#xff0c;所以序列的位置信息就被忽略了。因此&#xff0c;相对位置编码(Relative position encoding, RPE)是Transformer获取输入序列位置信息的重要方法&#xff0c;RPE在自然语言处理任务中已被…

LeetCode 63. 不同路径 II(DP)

1. 题目 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为“Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为“Finish”&#xff09;。 现在考虑网格中有障碍物。那么从左上角到…

技术动态 | 去中心化知识图谱协作平台建设实践

转载公众号 | DataFunTalk文章作者&#xff1a;Epik 铭识协议出品平台&#xff1a;DataFunTalk导读&#xff1a;1月10日&#xff0c;由EpiK铭识协议主办的“2021开源知识运动”主题活动为业界带来了一场知识图谱开放与互联的智慧盛宴。活动吸引了包括清华大学信息技术研究院副…

权威赛事来了!千言-文本生成评测启动,聚焦NLG技术痛点

自然语言生成是人工智能的重要前沿技术&#xff0c;该技术在落地时会面临一个难题&#xff1a;如何保证模型生成的文本与输入具有事实层面的一致性&#xff0c;即避免生成错误、臆想的信息&#xff1f;为推动相关研究&#xff0c;中国中文信息学会自然语言生成专委会与千言开源…

CRM系统新思维

客户关系管理系统&#xff08;CRM系统&#xff09;是管理公司当前以及未来潜在客户的系统&#xff0c;其主要目的是通过优化客户关系实现公司销售业绩的长期增长&#xff0c;它是企业信息系统的核心之一。目前&#xff0c;移动互联网、大数据以及人工智能技术发展日新月异&…

LeetCode 980. 不同路径 III(DFS+回溯)

1. 题目 在二维网格 grid 上&#xff0c;有 4 种类型的方格&#xff1a; 1 表示起始方格。且只有一个起始方格。2 表示结束方格&#xff0c;且只有一个结束方格。0 表示我们可以走过的空方格。-1 表示我们无法跨越的障碍。 返回在四个方向&#xff08;上、下、左、右&#x…

开源开放 | 开源网络通信行业知识图谱(新华三)

转载公众号 | 数字化领航OpenKG地址&#xff1a;http://openkg.cn/dataset/network-communication文章作者&#xff1a;新华三集团出品平台&#xff1a;数字化领航OpenKG是中国中文信息学会语言与知识计算专业委员会所倡导的开放知识图谱社区项目。旨在推动以中文为基础的知识图…

我删了这些训练数据…模型反而表现更好了!?

文 | Severus编 | Sheryc_王苏预训练语言模型的训练语料是全网数据&#xff0c;其来着不拒&#xff0c;只要喂过来的数据&#xff0c;统统吃掉&#xff0c;尽可能消化掉。而统计模型&#xff0c;除泛化能力外&#xff0c;另一个重要的能力就是记忆能力。我们知道&#xff0c;人…

会议交流 | CAAI BDSC2021大会专题七:社会计算与开放知识图谱

CAAI第六届全国大数据与社会计算学术会议&#xff08;China National Conference on Big Data & Social Computing&#xff0c;简称BDSC&#xff09;将于8月21-22日在重庆召开。早鸟注册开始了&#xff0c;截止时间为7月30日&#xff0c;注册链接&#xff1a;http://bdsc20…

高性能队列——Disruptor

背景 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列&#xff0c;研发的初衷是解决内存队列的延迟问题&#xff08;在性能测试中发现竟然与I/O操作处于同样的数量级&#xff09;。基于Disruptor开发的系统单线程能支撑每秒600万订单&#xff0c;2010年在QCon演讲后&…

哈工大SCIR出品《自然语言处理》新书,无套路送5本!

自然语言处理面临着8个难点&#xff0c;即语言的抽象性、组合性、歧义性、进化性、非规范性、主观性、知识性及难移植性。正是由于这些难点的存在&#xff0c;导致自然语言处理任务纷繁复杂。不过&#xff0c;虽然自然语言处理任务多种多样&#xff0c;却可以被归为三大类常见的…

OpenKG开源系列|开源知识图谱融合工具OpenEA (南京大学)

OpenKG地址&#xff1a;http://openkg.cn/tool/openeaGitHub地址&#xff1a;https://github.com/openkg-org/OpenEAGitee地址&#xff1a;https://gitee.com/openkg/OpenEA开放许可协议&#xff1a;GPL 3.0贡献者&#xff1a;南京大学&#xff08;胡伟、孙泽群、张清恒、王成名…

领域应用 | 美团商品知识图谱的构建及应用

转载公众号 | DataFunTalk分享嘉宾&#xff1a;曹雪智博士 美团 技术专家编辑整理&#xff1a;陈维美出品平台&#xff1a;DataFunTalk导读&#xff1a;在互联网新零售的大背景下&#xff0c;商品知识图谱作为新零售行业数字化的基石&#xff0c;提供了对于商品相关内容的立体化…