【力扣hot100题】(085)单词拆分
感觉动态规划题还是得多练,不然真的很容易自暴自弃……
同样是找到状态转移方程即可,这里维护的数组是记录前k个字符可不可以被拼接,也就是记录bool型。
每次挨个比较wordDict里的单词,假设单词长度为len,前k个字符可被拼接的条件是前k-len个字符可被拼接并且前k个字符的后len个字符与该单词相同。
总之是个有点复杂的if。
class Solution {
public:
bool wordBreak(string s, vector<string>& wordDict) {
vector<bool> word(s.size(),0);
word[0]=1;
for(int i=1;i<=s.size();i++){
for(int j=0;j<wordDict.size();j++){
if(i>=wordDict[j].size()&&word[i-wordDict[j].size()]&&wordDict[j]==s.substr(i-wordDict[j].size(),wordDict[j].size())) word[i]=1;
}
}
return word[s.size()];
}
};