尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
140. 单词拆分 II(dfs)
链接140. 单词拆分 II题解140. 单词拆分 II - 力扣LeetCodeclass Solution { private: // 表示以key为下标开始value表示可以到达字符串末尾的清空 unordered_mapint, vectorstring ans; unordered_setstring wordSet; public: vectorstring wordBreak(string s, vectorstring wordDict) { wordSet unordered_set(wordDict.begin(), wordDict.end()); backtrack(s, 0); return ans[0]; } void backtrack(const string s, int index) { if (!ans.count(index)) { // 如果打到达末尾直接返回并且给ans[index]一个空 if (index s.size()) { ans[index] {}; return; } ans[index] {}; for (int i index 1; i s.size(); i) { //substr表示以index为开头长度为i-index string word s.substr(index, i - index); // 如果字典有这个 if (wordSet.count(word)) { // 回溯下一个字符以i为开始 backtrack(s, i); // 通过以i为开头的字符串获得以index为开头字符串的情况 // 如果succ为空表示当前word为最后一个字符串 for (const string succ: ans[i]) { ans[index].push_back(succ.empty() ? word : word succ); } } } } } };class Solution { public: vectorstring wordBreak(string s, vectorstring wordDict) { if (s.size() 0 || wordDict.size() 0) { return {}; } unordered_setstring dict(wordDict.begin(), wordDict.end()); vectorstring result; unordered_mapint, vectorstring memo; int begin 0; // 以begin开头返回的组合 return dfs(begin, s, result, dict, memo); // return memo[0]; } vectorstring dfs(int begin, const std::string s, vectorstring result, unordered_setstring dict, unordered_mapint, vectorstring memo) { // 如果begin计算过 if (memo.find(begin) ! memo.end()) { return memo[begin]; } if (begin s.size()) { string tmp; memo[begin].push_back(tmp); return {tmp}; } vectorstring sub_result; for (int i begin; i s.size(); i) { std::string str s.substr(begin, i-begin1); if (dict.find(str) dict.end()) { continue; } vectorstring suffix dfs(i1, s, result, dict, memo); // 组装一下i1后面返回成功的组合 for (auto s : suffix) { // 如果s是空则直接放入 if (s.empty()) { sub_result.push_back(str); } else { // 组合一下 string sub_str str s; sub_result.push_back(move(sub_str)); } } } // 存储计算结果 memo[begin] sub_result; return sub_result; } };class Solution { public: vectorstring wordBreak(string s, vectorstring wordDict) { if (s.size() 0 || wordDict.size() 0) { return {}; } unordered_setstring dict(wordDict.begin(), wordDict.end()); vectorstring result; unordered_mapint, vectorstring memo; int begin 0; // 以begin开头返回的组合 return dfs(begin, s, result, dict, memo); // return memo[0]; } vectorstring dfs(int begin, const std::string s, vectorstring result, unordered_setstring dict, unordered_mapint, vectorstring memo) { // 如果begin计算过 if (memo.find(begin) ! memo.end()) { return memo[begin]; } if (begin s.size()) { string tmp; memo[begin].push_back(tmp); return {tmp}; } vectorstring sub_result; for (int i begin; i s.size(); i) { std::string str s.substr(begin, i-begin1); if (dict.find(str) dict.end()) { continue; } vectorstring suffix dfs(i1, s, result, dict, memo); // 组装一下i1后面返回成功的组合 for (auto s : suffix) { // 如果s是空则直接放入 if (s.empty()) { sub_result.push_back(str); } else { // 组合一下 string sub_str str s; sub_result.push_back(move(sub_str)); } } } // 存储计算结果 memo[begin] sub_result; return sub_result; } };
RELATED

相关推荐

mirrors/ali-vilab/text-to-video-ms-1.7b模型优化:知识蒸馏压缩模型体积50%实践

mirrors/ali-vilab/text-to-video-ms-1.7b模型优化:知识蒸馏压缩模型体积50%实践

mirrors/ali-vilab/text-to-video-ms-1.7b模型优化:知识蒸馏压缩模型体积50%实践 【免费下载链接】text-to-video-ms-1.7b 项目地址: https://ai.gitcode.com/hf_mirrors/ali-vilab/text-to-video-ms-1.7b text-to-video-ms-1.7b 是阿里达摩院开源的 17 亿参…

📅 2026/10/16 1:16:54
OSX-KVM GPU 直通实战指南:4 步给 macOS 虚拟机装上独立显卡

OSX-KVM GPU 直通实战指南:4 步给 macOS 虚拟机装上独立显卡

OSX-KVM GPU 直通实战指南:4 步给 macOS 虚拟机装上独立显卡 【免费下载链接】OSX-KVM Run macOS on QEMU/KVM. With OpenCore Monterey Ventura Sonoma support now! Only commercial (paid) support is available now to avoid spammy issues. No Mac system i…

📅 2026/10/7 1:25:47
Recurly.js Elements完全指南:打造完全自定义UI的新一代支付表单API

Recurly.js Elements完全指南:打造完全自定义UI的新一代支付表单API

Recurly.js Elements完全指南:打造完全自定义UI的新一代支付表单API 【免费下载链接】recurly-js Simple subscription billing in the browser 项目地址: https://gitcode.com/gh_mirrors/re/recurly-js Recurly.js 是 Recurly 推出的浏览器端订阅计费 Java…

📅 2026/9/12 21:13:40
MORE NEWS

更多资讯

📰

DeepSeek-Harness流式输出核心:StreamChunk语义流与管道优化

1. 这不是“加个loading动画”那么简单:流式输出在Agent系统里的真实战场你有没有遇到过这样的情况:在调试一个基于DeepSeek-Harness构建的Agent时,前端UI卡在“思考中…”长达8秒,然后突然一次性弹出2000字的完整响应&#xff1f…

📰

AI产品经理生存指南:破解高薪短命困局

1. 现象背后的行业真相 去年某互联网大厂高薪聘请的AI产品总监,入职不到180天就被闪电裁员。这并非个案,过去一年里类似案例在科技圈频繁上演。表面看是个人能力问题,实则折射出AI行业从野蛮生长到理性发展的转型阵痛。 我接触过7家头部企业…

📰

AI驱动的Shell环境自动化框架:解决开发环境初始化痛点

1. 这不是又一个“AI写代码”玩具:它解决的是真实开发流水中最耗神的三类重复劳动GitHub趋势榜第7,单日新增476星——这个数字背后不是营销刷量,而是大量一线开发者在深夜提交star时的真实反馈。我盯着这个项目主页刷新了三次,确认…

📰

企业AI项目技术选型:RAG、Agent与微调实战对比

1. 企业AI项目技术选型的核心困境2026年的企业AI项目正面临前所未有的技术选择难题。作为从业者,我亲眼见证了太多团队在RAG、Agent和微调之间的摇摆不定,最终导致资源浪费和项目延期。最近接触的一个典型案例:某金融科技公司投入300万GPU算力…

📰

知识抽取与表达:从原理到实践的技术解析

1. 知识抽取与表达的核心概念解析 知识抽取(Knowledge Extraction)是从非结构化或半结构化数据中识别和提取结构化知识的过程。在Web信息处理领域,这通常涉及从网页文本、表格、列表等元素中抽取出实体、属性和关系。我处理过的一个电商评论分…

📰

网页嵌入flowplayer流媒体播放器:Red5与RTMP/HLS版本配置实战

简介:面向需要在网页端集成流媒体播放能力的开发者,这份资源提供了一套基于 Flowplayer 的完整嵌入方案,重点解决 RTMP 流在浏览器中的播放问题。包内共 8 个文件,以 swf 播放器核心与插件、js 脚本、html 示例页为主,…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬