140. 单词拆分 II(dfs)

发布时间:2026/8/23 13:43:03

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; } };

相关新闻

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

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

2026/8/23 13:43:03

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 亿参…

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

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

2026/8/23 13:43:03

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…

nom 模糊过滤器源码详解:fuzzy 匹配与正则提取器的实现原理

nom 模糊过滤器源码详解:fuzzy 匹配与正则提取器的实现原理

2026/8/23 13:43:03

nom 模糊过滤器源码详解:fuzzy 匹配与正则提取器的实现原理 【免费下载链接】nom RSS reader for the terminal 项目地址: https://gitcode.com/gh_mirrors/nom1/nom nom 是一款运行在终端里的 RSS 阅读器,按 / 就能在成千上万篇文章中快速筛选。…

为什么OCR总是认错字?uvdoc-npu昇腾NPU文档图像矫正模型完全入门指南

为什么OCR总是认错字?uvdoc-npu昇腾NPU文档图像矫正模型完全入门指南

2026/8/23 14:33:05

为什么OCR总是认错字?uvdoc-npu昇腾NPU文档图像矫正模型完全入门指南 【免费下载链接】uvdoc-npu 用户可直接获取在华为昇腾 NPU 上运行的文档图像矫正模型,用于消除拍摄畸变和透视变形以提升OCR准确率。该项目将PaddleOCR的UVDoc模型逐算子迁移至PyTorc…

ipatool IPA下载完整指南:从Apple ID登录到批量获取只需5分钟

ipatool IPA下载完整指南:从Apple ID登录到批量获取只需5分钟

2026/8/23 14:33:05

ipatool IPA下载完整指南:从Apple ID登录到批量获取只需5分钟 【免费下载链接】ipatool Command-line tool that allows searching and downloading app packages (known as ipa files) from the iOS App Store 项目地址: https://gitcode.com/GitHub_Trending/ip…

MaxKB 开源企业知识库问答系统:1 条 Docker 命令跑起来,直接提问你的文档

MaxKB 开源企业知识库问答系统:1 条 Docker 命令跑起来,直接提问你的文档

2026/8/23 14:33:05

MaxKB 开源企业知识库问答系统:1 条 Docker 命令跑起来,直接提问你的文档 【免费下载链接】MaxKB 🔥 MaxKB is an open-source platform for building enterprise-grade agents. 强大易用的开源企业级智能体平台。 项目地址: https://gitco…

OpenKore实战手册:从0到全自动只需一次配置

OpenKore实战手册:从0到全自动只需一次配置

2026/8/23 14:33:05

OpenKore实战手册:从0到全自动只需一次配置 【免费下载链接】openkore A free/open source client and automation tool for Ragnarok Online 项目地址: https://gitcode.com/gh_mirrors/op/openkore 打怪的时候你最清楚那种感觉:点攻击、点拾取、…

Gridfinity Extended快速开始教程:10分钟搭建OpenSCAD环境并生成第一个3D打印收纳盒

Gridfinity Extended快速开始教程:10分钟搭建OpenSCAD环境并生成第一个3D打印收纳盒

2026/8/23 14:33:05

Gridfinity Extended快速开始教程:10分钟搭建OpenSCAD环境并生成第一个3D打印收纳盒 【免费下载链接】gridfinity_extended_openscad Gridfinity Extended OpenSCAD Model 项目地址: https://gitcode.com/gh_mirrors/gr/gridfinity_extended_openscad Gridfi…

使用geemap进行Google Earth Engine Python API入门指南

使用geemap进行Google Earth Engine Python API入门指南

2026/8/23 14:23:04

使用geemap进行Google Earth Engine Python API入门指南 【免费下载链接】geemap A Python package for interactive geospatial analysis and visualization with Google Earth Engine. 项目地址: https://gitcode.com/gh_mirrors/ge/geemap 概述 本文介绍如何使用gee…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/23 0:02:09

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/23 0:02:09

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/23 0:02:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/23 0:02:09

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/23 0:02:09

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/23 0:02:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/22 4:13:47

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/22 1:32:34

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…