Leetcode 140 Word Break II

题意:给定一个string以及一个wordDict,要求返回一个vector<string> ,这个vector中的string都是word Dict中的组合

Input: s = "catsanddog", wordDict = ["cat","cats","and","sand","dog"]

Output: ["cats and dog","cat sand dog"]

想法:backtracking, 想象一下每一轮你要干什么,首先拿wordDict中的每个单词去填写,如果对不上号,你就填下一个单词直到最后填到单词末尾就结束了。

cpp 复制代码
class Solution {
public:
    vector<string> ret;
    vector<string> wordBreak(string s, vector<string>& wordDict) {
        dfs(s, "", 0 , wordDict);
        return ret;
    }

    void dfs(string& s, string cur, int st, vector<string>& wordDict) {
        if (st == s.size()) {
            cur.pop_back();
            ret.push_back(cur);
        }
        
        for(auto word : wordDict) {
            if(st + word.size() <= s.size()) {
                if(word == s.substr(st, word.size())) {
                    string temp = cur;
                    cur += word;
                    cur += " ";
                    dfs(s, cur, st+word.size(), wordDict);
                    cur = temp;
                }
            }
        }
    }
};

时间复杂度是指数级别的,递归栈空间是O(n)

相关推荐
张萌杰2 天前
深度学习的基础知识(常见名词解释)
人工智能·深度学习·机器学习·1024程序员节
开开心心就好3 天前
免费无广告卸载工具,轻便安全适配全用户
linux·运维·服务器·网络·安全·启发式算法·1024程序员节
开开心心就好4 天前
图片格式转换工具,右键菜单一键转换简化
linux·运维·服务器·python·django·pdf·1024程序员节
徐子童6 天前
网络协议---TCP协议
网络·网络协议·tcp/ip·面试题·1024程序员节
扫地的小何尚7 天前
NVIDIA RTX PC开源AI工具升级:加速LLM和扩散模型的性能革命
人工智能·python·算法·开源·nvidia·1024程序员节
数据皮皮侠AI8 天前
上市公司股票名称相似度(1990-2025)
大数据·人工智能·笔记·区块链·能源·1024程序员节
开开心心就好9 天前
系统清理工具清理缓存日志,启动卸载管理
linux·运维·服务器·神经网络·cnn·pdf·1024程序员节
Evan东少11 天前
[踩坑]笔记本Ubuntu20.04+NvidiaRTX5060驱动+cuda+Pytorch+ROS/Python实现人脸追踪(环境准备)
1024程序员节
不爱编程的小陈13 天前
C/C++每日面试题
面试·职场和发展·1024程序员节
开开心心就好13 天前
右键菜单管理工具,添加程序自定义名称位置
linux·运维·服务器·ci/cd·docker·pdf·1024程序员节