Leecode 139.单词拆分
题目地址:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
题目类型:完全背包
class Solution {
public:
bool wordBreak(string s, vector<string>& wordDict) {
// 完全背包问题
// dp[i]代表从0~i的字符串能否使用后面的wordict拼写出来
vector<bool> dp(s.size() + 1, false);
dp[0] = true;
// 要求顺序,先背包后物品
for (int j = 1; j <= s.size(); ++j) {
for (int i = 0; i < wordDict.size(); ++i) {
// dp[j]由两个字符串组成,分别是:dp[j - size]和s.substr(j - size, size)
string str = wordDict[i];
int size = str.size();
if (j - size >= 0) dp[j] = dp[j - size] && (str == s.substr(j - size, size));
if (dp[j]) break;
}
}
return dp[s.size()];
}
};