题意:给一个字符串,和一个字符串数组,问是否可以把字符串分割成几个单词,这些单词都在字符串数组里面。
题解:dp,dp[i]表示字符串的第i位是否能分割成符合条件的单词。
dp[i] = true,然后去更新dp[i + 1…n],最后判断dp[n]就可以。
class Solution {
public:
bool wordBreak(string s, unordered_set<string>& wordDict) {
int n = s.length();
bool dp[n + 2];
memset(dp,false,sizeof(dp));
dp[0] = true;
for(int i = 1; i <= n; i++)
{
if(dp[i - 1])
{
for(int j = i - 1; j < n; j++)
{
string ss = s.substr(i - 1,j - i + 2);
if(wordDict.find(ss) != wordDict.end()) dp[j + 1] = true;
}
}
}
return dp[n];
}
};