您的位置:首页 > 娱乐 > 八卦 > 杭州商业空间设计公司_界面设计报价_安卓优化大师新版_定制网站+域名+企业邮箱

杭州商业空间设计公司_界面设计报价_安卓优化大师新版_定制网站+域名+企业邮箱

2025/5/9 5:26:00 来源:https://blog.csdn.net/weixin_73557167/article/details/146354679  浏览:    关键词:杭州商业空间设计公司_界面设计报价_安卓优化大师新版_定制网站+域名+企业邮箱
杭州商业空间设计公司_界面设计报价_安卓优化大师新版_定制网站+域名+企业邮箱

单词拆分

1、题目描述

题目链接:139. 单词拆分 - 力扣(LeetCode)

题目描述:在这里插入图片描述

2、题目解答

思路和算法
在这里插入图片描述
总的来说,就是需要看到底如何定义这个状态转移函数dp,上述主要用到的方法就是借助于dp[i]为true,然后判断dp[j]的话直接就是只需要查找dp[i…j]是否在单词字典中就可以了

3、代码实现

class Solution
{
public:bool wordBreak(string s, vector<string> &wordDict){// 创建一个无序集合 wordDictSet,存储字典中的单词auto wordDictSet = unordered_set<string>();for (auto word : wordDict)wordDictSet.insert(word);  // 将单词添加到集合中// 创建一个布尔型数组 dp,初始化为 false,dp[0] 为 trueauto dp = vector<bool>(s.size() + 1);dp[0] = true;// 遍历字符串 s 的每个位置 ifor (int i = 1; i <= s.size(); i++){// 检查从 0 到 i 的所有子串for (int j = 0; j < i; j++){// 如果 dp[j] 为 true 且子串 s.substr(j, i - j) 在字典中if (dp[j] && wordDictSet.find(s.substr(j, i - j)) != wordDictSet.end()){// 更新 dp[i] 为 truedp[i] = true;// 找到符合条件的子串后,退出内层循环break;}}}// 返回 dp[s.size()],即整个字符串 s 是否可以被拆分return dp[s.size()];}
};

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com