还好做出来了,就是慢了点。
public int numDistinct(String s, String t) { int m = s.length(); int n = t.length(); if(m<n){ return 0; }else if(m ==n){ if(s.equals(t)){ return 1; }else{ return 0; } } int[][] dp = new int[n+1][m+1]; for(int i = 0;i<m;i++){ if(s.charAt(i) == t.charAt(0)){ dp[1][i+1] = dp[1][i] + 1; }else{ dp[1][i+1] = dp[1][i]; } } for(int j = 1;j<n;j++){ for(int i = j;i<m;i++){ if(s.charAt(i) == t.charAt(j)){ dp[j+1][i+1] = dp[j][i]+dp[j+1][i]; }else{ dp[j+1][i+1] = dp[j+1][i]; } } } return dp[n][m]; }
没什么特别之处。
——2020.6.27