您的位置:首页 > 产品设计 > UI/UE

LeetCode之Distinct Subsequences

2015-07-28 22:06 405 查看
/*动态规划法。
设dp[i][j]表示S[0...i]中T[0...j]出现的次数,则有
1)若S[i]!=S[j],dp[i][j] = dp[i-1][j];
2)若S[i]==S[j],dp[i][j] = dp[i-1][j] + dp[i-1][j-1]。*/
class Solution {
public:
int numDistinct(string s, string t) {
if(s.empty()) return 0;
vector<int> dp(t.size(), 0);

dp[0] = (s[0] == t[0] ? 1 : 0);
for(int i = 1; i < s.size(); ++i){
for(int j = t.size()-1; j >= 0; --j){
if(j == 0 && s[i] == t[j]){
dp[j] += 1;
continue;
}
if(s[i] == t[j]) dp[j] = dp[j] + dp[j-1];
}
}
return dp[t.size()-1];
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: