| 123456789101112131415161718192021222324252627282930 | package mainfunc numDistinct(s string, t string) int {	m, n := len(s), len(t)	if m < n {		return 0	}	dp := make([][]int, m+1) // dp[i, j] means num distinct between s[0...i-1] and t[0...j-1]	for i := range dp {		dp[i] = make([]int, n+1)		dp[i][0] = 1	}	// if s[i-1] == t[i-1], dp[i, j] = dp[i-1, j-1] + dp[i-1, j]	// else dp[i, j] = dp[i-1, j]	for i := 1; i <= m; i++ {		for j := 1; j <= n && j <= i; j++ {			if s[i-1] == t[j-1] {				dp[i][j] = dp[i-1][j-1] + dp[i-1][j]			} else {				dp[i][j] = dp[i-1][j]			}		}	}	return dp[m][n]}// func main() {// 	println(numDistinct("rabbbit", "rabbit"), 3)// 	println(numDistinct("babgbag", "bag"), 5)// }
 |