目标串与模式串匹配的子串总数-动态规划
题目描述
[115. 不同的子序列]https://leetcode-cn.com/problems/distinct-subsequences/
题解
class Solution {
public int numDistinct(String s, String t) {
int m = s.length();
int n = t.length();
if(m<n){//处理边界特殊情况
return 0;
}
int[][] dp = new int[m+1][n+1];
for(int i=0;i<=m;i++){//空串是任何串的子序列
dp[i][n] = 1;
}
for(int i=s.length()-1;i>=0;i--){
char sChar = s.charAt(i);
for(int j=t.length()-1;j>=0;j--){
char tChar = t.charAt(j);
if(sChar == tChar){//当前字符相等
dp[i][j] = dp[i+1][j+1] + dp[i+1][j];//可以选择匹配当前字符;或者不匹配当前字符,在目标串的右边求解
}else{//当前字符不相等
dp[i][j] = dp[i+1][j];//只能在目标串的右边求解
}
}
}
return dp[0][0];
}
}

浙公网安备 33010602011771号