您的位置:首页 > 娱乐 > 八卦 > 少儿编程证书含金量排名_互联网公司的最新排名_长尾关键词_最佳bt磁力狗

少儿编程证书含金量排名_互联网公司的最新排名_长尾关键词_最佳bt磁力狗

2025/4/27 6:20:31 来源:https://blog.csdn.net/weixin_41554427/article/details/147195207  浏览:    关键词:少儿编程证书含金量排名_互联网公司的最新排名_长尾关键词_最佳bt磁力狗
少儿编程证书含金量排名_互联网公司的最新排名_长尾关键词_最佳bt磁力狗

这道题用动态规划解决。

class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string> wordSet;for(string& word:wordDict){wordSet.insert(word);}int s_len = s.size();//s的下标从1开始起算,dp[j]表示s[1,j]能拆分成wordDict的组合vector<bool> dp(s_len+1,false);dp[0] = true;//表示空串for(int len = 1;len <= s_len;len++){//对s[1,len]遍历for(int i = 0;i < len;i++){//对s[1,len]的拆分点遍历if(dp[i] && wordSet.find(s.substr(i,len-i)) != wordSet.end()){dp[len] = true;break;}}}return dp[s_len];}
};

可以事先确定,wordDict中最长的单词的长度max_word_len。这样在考虑s.sub(i,len-i)时候,如果len-i大于max_word_len就可以直接跳过这种情况。

优化后的代码:

class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string> wordSet;int max_word_len = 0;for(string& word:wordDict){wordSet.insert(word);if(word.size() > max_word_len) max_word_len = word.size();}int s_len = s.size();//s的下标从1开始起算,dp[j]表示s[1,j]能拆分成wordDict的组合vector<bool> dp(s_len+1,false);dp[0] = true;//表示空串for(int len = 1;len <= s_len;len++){//对s[1,len]遍历for(int i = 0;i < len;i++){//对s[1,len]的拆分点遍历if(len -i > max_word_len)continue;if(dp[i] && wordSet.find(s.substr(i,len-i)) != wordSet.end()){dp[len] = true;break;}}}return dp[s_len];}
};

版权声明:

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

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