diff --git a/go/2002-maximum-product-of-the-length-of-two-palindromic-subsequences.go b/go/2002-maximum-product-of-the-length-of-two-palindromic-subsequences.go new file mode 100644 index 000000000..4086e0a22 --- /dev/null +++ b/go/2002-maximum-product-of-the-length-of-two-palindromic-subsequences.go @@ -0,0 +1,46 @@ +func maxProduct(s string) (res int) { + dp := make([]int, 1< b { + return a + } + return b + } + + for m := 1; m <= mask; m++ { + dp[m] = palindromeSize(s, m) + } + + for m1 := mask; m1 > 0; m1-- { + if dp[m1]*(len(s)-dp[m1]) <= res { + continue + } + for m2 := mask ^ m1; m2 > 0; m2 = (m2 - 1) & (mask ^ m1) { + res = max(res, dp[m1]*dp[m2]) + } + } + return +} \ No newline at end of file