自学内容网 自学内容网

代码随想录算法训练营第四十六天|139.单词拆分

动态规划


一、单词拆分

1.回溯法暴力搜索
2.转化为背包问题,同时为求排列,所以先遍历背包,再遍历物品。背包容量相当于目标字符串,转化为能否装满背包问题,完全背包

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()];


    }
};

总结

背包问题需要总结
学习时间90min。
学习资料:《代码随想录》


原文地址:https://blog.csdn.net/weilana/article/details/138035471

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!