题目描述:
给出字符串S和字符串T,计算S的不同的子序列中T出现的个数。
子序列字符串是原始字符串通过删除一些(或零个)产生的一个新的字符串,并且对剩下的字符的相对位置没有影响。(比如,“ACE”是“ABCDE”的子序列字符串,而“AEC”不是)。
样例
给出S = "rabbbit", T = "rabbit"
返回 3
动态规划想不明白,用递归做的。
1 public class Solution { 2 public int num = 0; 3 4 5 /** 6 * @param word1 & word2: Two string. 7 * @return: The minimum number of steps. 8 */ 9 public int numDistinct(String S, String T) { 10 // write your code here 11 find(S,T,0,0); 12 return num; 13 } 14 15 public void find(String S,String T,int index,int from){ 16 if(index == T.length()){ 17 num++; 18 return; 19 } 20 21 for(int i=from;i<S.length();i++){ 22 23 if(S.charAt(i) == T.charAt(index)) 24 find(S,T,index+1,i+1); 25 } 26 } 27 }