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)

相关推荐
金融小师妹11 小时前
基于机器学习与深度强化学习:非农数据触发AI多因子模型预警!12月降息预期骤降的货币政策预测
大数据·人工智能·深度学习·1024程序员节
紫麦熊21 小时前
react+ts+vite+tailwind+shadcn
1024程序员节
日日行不惧千万里1 天前
MediaMTX详解
1024程序员节
金融小师妹1 天前
基于LSTM-GARCH模型:三轮黄金周期特征提取与多因子定价机制解构
人工智能·深度学习·1024程序员节
自信150413057591 天前
初学者小白复盘23之——联合与枚举
c语言·1024程序员节
CoderYanger3 天前
B.双指针——3194. 最小元素和最大元素的最小平均值
java·开发语言·数据结构·算法·leetcode·职场和发展·1024程序员节
自信150413057593 天前
初学者小白复盘22之——结构体
c语言·数据结构·1024程序员节
_Power_Y3 天前
黑马点评逻辑梳理+面试题
数据库·redis·学习·1024程序员节
开开心心_Every4 天前
Excel图片提取工具,批量导出无限制
学习·pdf·华为云·.net·excel·harmonyos·1024程序员节
爱喝水的鱼丶5 天前
SAP-ABAP:SAP概述:数据处理的系统、应用与产品
运维·学习·sap·abap·1024程序员节