class Solution {
public:
int numDistinct(string S, string T) {
if(S.size()<T.size()) return 0;
int *table=new int[S.size()*T.size()];
memset(table,0,S.size()*T.size()*sizeof(int));
int occur=0;
for(int i=0;i<S.size();i++)
{
if(S[i]==T[0])
{
occur++;
}
table[i*T.size()]=occur;
}
for(int i=1;i<S.size();i++)
{
for(int j=1;j<T.size();j++)
{
if(S[i]==T[j])
{
table[i*T.size()+j]=table[(i-1)*T.size()+j-1]+table[(i-1)*T.size()+j];
}
else
{
table[i*T.size()+j]=table[(i-1)*T.size()+j];
}
}
}
return table[S.size()*T.size()-1];
}
};
Distinct Subsequences
最新推荐文章于 2024-03-21 01:52:03 发布