

这里我们将赋值操作判断语句放到累加操作判断语句前面,避免连续相等字符累加出错情况
public class Solution {
public int numDistinct (String S, String T) {
int s_len = S.length();
int t_len = T.length();
int[][] dp = new int[t_len][s_len];
for(int i = 0;i<s_len;i++) {
if(S.charAt(i)==T.charAt(0)) dp[0][i]=1;
}
for(int i = 1;i<t_len;i++){
int num = 0;
for(int j = 0;j<s_len;j++){
if(S.charAt(j)==T.charAt(i)) dp[i][j]=num;
if(dp[i-1][j]!=0) num+=dp[i-1][j];
}
}
int count=0;
for(int i = 0;i<s_len;i++) count+=dp[t_len-1][i];
return count;
}
}
博客探讨了在处理字符串子序列问题时,如何通过调整赋值和判断语句顺序来避免连续相等字符导致的错误,重点聚焦于算法和动态规划的应用。

3710

被折叠的 条评论
为什么被折叠?



