LC115 Distinct Subsequences
这种字符串题目,初看不好着手,八成又是动态规划题。用动态数组可以减少空间需求,这里没用。此外注意下第一行的初始化,和平常动归题略有不同。
1 class Solution { 2 public: 3 int numDistinct(string s, string t) { 4 if(t.size()>s.size()||t=="") 5 return 0; 6 int col=s.size()+1; 7 int row=t.size()+1; 8 vector<vector<int> > record(row,vector<int>(col,0)); 9 int i,j; 10 for(j=1;j<col;j++) 11 if(t[0]==s[j-1]) 12 record[1][j]=record[1][j-1]+1; 13 else 14 record[1][j]=record[1][j-1]; 15 for(i=2;i<row;i++) 16 { 17 for(j=2;j<col;j++) 18 { 19 if(s[j-1]==t[i-1]) 20 record[i][j]=record[i-1][j-1]+record[i][j-1]; 21 else 22 record[i][j]=record[i][j-1]; 23 } 24 } 25 return record[row-1][col-1]; 26 } 27 };