网络平台建站,制造企业危机公关解决方案,如何做网站站内搜索,百度网址怎么写39. 单词拆分
给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。
注意#xff1a;不要求字典中出现的单词全部都使用#xff0c;并且字典中的单词可以重复使用。 示例 1#xff1a;
输入: s leetcode…39. 单词拆分
给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。
注意不要求字典中出现的单词全部都使用并且字典中的单词可以重复使用。 示例 1
输入: s leetcode, wordDict [leet, code]
输出: true
解释: 返回 true 因为 leetcode 可以由 leet 和 code 拼接成。示例 2
输入: s applepenapple, wordDict [apple, pen]
输出: true
解释: 返回 true 因为 applepenapple 可以由 apple pen apple 拼接成。注意你可以重复使用字典中的单词。示例 3
输入: s catsandog, wordDict [cats, dog, sand, and, cat]
输出: falses
思路 //dp[j] 表示长度为j的字符串有一个或多个wordDict里的字符串组成 //dp[j] true;就是其递推公式 //初始化dp[0] true; 其他为false //遍历顺序 先遍历背包再遍历物品求排列数 //打印dp数组
代码
class Solution {
public:bool wordBreak(string s, vectorstring wordDict) {//dp[j] 表示长度为j的字符串有一个或多个wordDict里的字符串组成//dp[j] true;就是其递推公式//初始化dp[0] true; 其他为false//遍历顺序 先遍历背包再遍历物品求排列数//打印dp数组unordered_setstring wordSet(wordDict.begin(), wordDict.end());vectorbool 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()];}
};
还有很多瑕疵还需继续坚持