给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。
说明:
拆分时可以重复使用字典中的单词。
你可以假设字典中没有重复的单词。
简要题解
题意就是询问字符串s是否可以完全被wordDict使用如果可以即返回真
我们用dp记录一下改单词是否被使用过了要是从头到尾都被使用过了
class Solution {
public:
bool wordBreak(string s, vector<string>& wordDict) {
int n=s.size();
vector<int>dp(n+1,0);
for(int i=1;i<=n;i++)
{
dp[i]=dp[i-1]+1;
for(auto& word:wordDict)
{
if(word.size()<=i)
{
if(word==s.substr(i-word.size(),word.size()))
dp[i]=min(dp[i],dp[i-word.size()]);
}
}
}
return dp[n]==0;
}
};