首页 > 其他分享 >动态规划——26单词拆分

动态规划——26单词拆分

时间:2025-01-19 15:53:38浏览次数:1  
标签:26 set int 单词 拆分 wordDict dp size

这道题用代码随想录的解释有点牵强,第二层for循环和递推公式也没有说明白。
image
image

代码

class Solution {
public:
    bool wordBreak(string s, vector<string>& wordDict) {
        unordered_set<string> set(wordDict.begin(),wordDict.end());
        //字典单词是物品,s是背包
        int size = s.size();
        int num = wordDict.size();
        // 初始化 1.全为false 2.dp[0]空串为true才能递推
        vector<bool> dp(size+1);//dp[i]表示字符串的前i个字符组成的字符串是否可由wordDict的单词拼出
        dp[0] = true;
        
        // 遍历顺序:先容量再物品——求排列数(字典单词按顺序排列才能组成s)
        for(int i=1;i<=size;i++){// 容量
            for(int j=0;j<i;j++){// 物品
                // 递推公式
                // 要看[0-i-1]是否合法,可以将其分割为[0-j-1],[j,i-1]两个部分,前者由dp[j]得,后者看是否在字典中; 其中j < i
                // 第一部分[0-j-1]由dp[j]可知
                string str = s.substr(j,i-j);// 第二部分[j,i-1]:起始位置j,截取个数i-j(总共是i个字符)
                if(dp[j] && set.find(str)!=set.end()){//dp[i]==true && [i,j]在字典中 dp[j]才为true
                    dp[i] = true;
                }
            }
        }

        return dp[size];

    }
};

标签:26,set,int,单词,拆分,wordDict,dp,size
From: https://www.cnblogs.com/neromegumi/p/18679636

相关文章

  • 2266. 统计打字方案数
    2266.统计打字方案数题目链接:2266.统计打字方案数代码如下:classSolution{public: intcountTexts(stringpressedKeys){ vector<longlong>f(pressedKeys.size()+1); f[0]=f[1]=1; for(inti=1;i<pressedKeys.size();i++){ f[i+1]=f......
  • LeetCode题练习与总结:反转字符串中的单词 Ⅲ -- 557
    一、题目描述给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例1:输入:s="Let'stakeLeetCodecontest"输出:"s'teLekatedoCteeLtsetnoc"示例2:输入:s="MrDing"输出:"rMgniD"提示:1<=s.length<=5*10^......
  • CF 265B.Roadside Trees (Simplified Edition)(Java实现)
    题目分析    松鼠的起点在第一棵树的0位置,它的行动轨迹为到达顶端,吃坚果,到另一棵树的同位置,到达顶端,吃坚果。思路分析    根据题目分析,我们需要有一个不断更新的起始位置,单次循环内的时间=到达顶端的距离+吃坚果+跳跃=顶端-起始+1+1代码        ......
  • 【花雕学编程】Arduino动手做(246)---使用 Web 服务器的 ESP8266 LED 控制
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来——小小的......
  • ESP8266
    XCOSnTh平台的获取如下 XCOSnTh-MCU-Lib-CSDN博客https://blog.csdn.net/stars_A_B_C/article/details/145224971?spm=1001.2014.3001.5501https://blog.csdn.net/stars_A_B_C/article/details/145224971?spm=1001.2014.3001.5501https://blog.csdn.net/stars_A_B_C/article/......
  • 单词搜索(递归)
    题目链接:https://leetcode.cn/problems/word-search/题意:给定二维char数组,询问是否能够有路径来获得给定的字符数组无法改为动态规划表classSolution{public:boolexist(vector<vector<char>>&board,stringword){intn=board.size();intm=boa......
  • 使用标签怎样对一个单词标志缩写呢?
    在前端开发中,要对一个单词进行缩写标记,通常可以使用HTML的<abbr>标签。这个标签用于表示一个缩写或首字母缩略词,并可以通过title属性来提供缩写的完整形式或解释。当用户将鼠标悬停在带有<abbr>标签的文本上时,浏览器会显示title属性中的值作为工具提示。以下是使用<abbr>标签标记......
  • NodeJS“学雷锋”志愿者管理系统-计算机毕设 附源码 39269
    NodeJS“学雷锋”志愿者管理系统目 录摘要1绪论1.1研究背景与意义1.2开发现状1.3论文结构与章节安排2 “学雷锋”志愿者管理系统系统分析2.1可行性分析2.1.1技术可行性分析2.1.2经济可行性分析2.1.3操作可行性分析2.2系统功能分析2.2.1功......
  • 【代码随想录】刷题记录(103)-整数拆分
    题目描述:给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k>=2 ),并使这些整数的乘积最大化。返回 你可以获得的最大乘积 。 示例1:输入:n=2输出:1解释:2=1+1,1×1=1。示例 2:输入:n=10输出:36解释:10=3+3+4,3× 3× 4=......
  • P1126 - 【提高】英文翻译 -
    难度:8+输入格式一个自然数n,0<=n<=2^31-1。输出格式输出这个数的英文,最后不要有多余的空格。输入数据11111111111输出数据1onebilliononehundredandelevenmilliononehundredandeleventhousandonehundredandeleven 代码:#include<iostream>#incl......