原题链接:https://leetcode-cn.com/problems/word-break/
一开始把这个题目想复杂了,题解的方法也是需要O(n*n)的复杂度,用动态规划做。
动态规划方程式为:
dp[i]=dp[j]+s.substr(j,i-j) is of wordDict
bool wordBreak(string s, vector<string>& wordDict) {
int len=s.size();
vector<bool> dp(len+1,0);
dp[0]=true;
for(int i=1;i<=len;i++){
for(int j=0;j<i;j++){
if(dp[j]&&find(wordDict.begin(),wordDict.end(),s.substr(j,i-j))!=wordDict.end())
dp[i]=true;
}
}
return dp[len];
}