dengxinyi 6 年 前
コミット
7dc744f26a
2 ファイル変更34 行追加5 行削除
  1. 25 5
      hard/115.go
  2. 9 0
      hard/123.go

+ 25 - 5
hard/115.go

@@ -1,10 +1,30 @@
 package main
 
 func numDistinct(s string, t string) int {
-	return 0
+	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)
-}
+// func main() {
+// 	println(numDistinct("rabbbit", "rabbit"), 3)
+// 	println(numDistinct("babgbag", "bag"), 5)
+// }

+ 9 - 0
hard/123.go

@@ -0,0 +1,9 @@
+package main
+
+func maxProfit(prices []int) int {
+	return 0
+}
+
+func main() {
+
+}