这道题是这样的,我拿个例子来说
public class Solution {
public int numDistinct(String s, String t) {
int [][]dp = new int[t.length()][s.length()];
for(int i=0;i<t.length();i++){
for(int j =0;j<s.length();j++){
if(i==0){
if(t.charAt(i)==s.charAt(j)){
dp[i][j]=1;
}
}else{
if(t.charAt(i)==s.charAt(j)){
int sum=0,max=0;
for (int k=0;k<j;k++){//找到之前可以的点的所有和
if(dp[i-1][k]>0)sum+=dp[i-1][k];
}
dp[i][j] = sum;
}
}
}
}
int all = 0;
for (int i =0;i<s.length();i++){
all+=dp[t.length()-1][i];
}
return all;
}
}
本文介绍了一个字符串匹配算法的具体实现,该算法通过动态规划的方法解决了在一个较长的字符串中寻找特定子串出现次数的问题。代码示例使用Java语言编写,展示了如何通过二维数组记录中间状态并最终得出结果。
356

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



