代码改变世界

leetcode - Distinct Subsequences

2013-03-28 21:49  张汉生  阅读(160)  评论(0编辑  收藏  举报

题目描述:点击此处

 1 class Solution {
 2 public:
 3   int numDistinct(string S, string T) {
 4     // Start typing your C/C++ solution below
 5     // DO NOT write int main() function
 6     int tlen = T.length();
 7     int * tag = new int[tlen+1];
 8     int i, j;
 9     for (i=0; i<=tlen; i++)
10       tag[i] = 0;
11     tag[0] = 1;
12     int slen = S.length();
13     if (slen < tlen)
14       return 0;
15     for (i=0; i<slen; i++){
16       char c = S.at(i);
17       j = i;
18       if (j>tlen-1)
19         j = tlen-1;
20       for (; j>=0; j--){
21         if (c==T.at(j))
22           tag[j+1] += tag[j];
23       }
24     }
25     int rlt = tag[tlen];
26     delete []tag;
27     return rlt;
28   }
29 };