代码随想录 -- day46 --139.单词拆分

139.单词拆分

dp[i] : 字符串长度为i的话,dp[i]为true,表示可以拆分为一个或多个在字典中出现的单词

递推公式是 if([j, i] 这个区间的子串出现在字典里 && dp[j]是true) 那么 dp[i] = true。

本题一定是 先遍历 背包,再遍历物品

cpp 复制代码
class Solution {
public:
    bool wordBreak(string s, vector<string>& wordDict) {
        unordered_set<string> wordSet(wordDict.begin(), wordDict.end());
        vector<bool> dp(s.size() + 1, false);
        dp[0] = true;
        for (int i = 1; i <= s.size(); i++) {   // 遍历背包
            for (int j = 0; j < i; j++) {       // 遍历物品
                string word = s.substr(j, i - j); //substr(起始位置,截取的个数)
                if (wordSet.find(word) != wordSet.end() && dp[j]) {
                    dp[i] = true;
                }
            }
        }
        return dp[s.size()];
    }
};
相关推荐
刻意思考2 分钟前
KM算法的时间复杂度,为什么可以降低一个数量级
后端·算法·程序员
橙序员小站4 分钟前
探究分布式哈希算法:哈希取模与一致性哈希
算法·架构
飞川0015 分钟前
【LeetCode 热题100】45:跳跃游戏 II(详细解析)(Go语言版)
算法·go
.格子衫.9 分钟前
006贪心——算法备赛
数据结构·算法·leetcode
程序员黄同学34 分钟前
解释观察者模式,如何实现观察者模式?
前端·算法·观察者模式
Repeat71534 分钟前
日志统计(双指针)
java·数据结构·算法·蓝桥杯·双指针·滑动窗口
独好紫罗兰34 分钟前
洛谷题单3-P5725 【深基4.习8】求三角形-python-流程图重构
开发语言·python·算法
明月看潮生2 小时前
青少年编程与数学 02-016 Python数据结构与算法 01课题、算法
数据结构·python·算法·青少年编程·编程与数学
小鱼学习笔记2 小时前
4.1最大子数组和(贪心算法、动态规划)
算法·贪心算法·动态规划
Мартин.2 小时前
[CISSP] [6] 密码学和对称密钥算法
算法·密码学