Skip to content

Commit c3d5f61

Browse files
committed
create 2002 in py
1 parent 6aa720b commit c3d5f61

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"""
2+
Time Complexity: O(2^N)
3+
Space Complexity: O(2^N)
4+
"""
5+
class Solution:
6+
def maxProduct(self, s):
7+
n = len(s)
8+
9+
first, last = [0]*(1<<n), [0]*(1<<n)
10+
11+
for i in range(n):
12+
for j in range(1<<i, 1<<(i+1)):
13+
first[j] = i
14+
15+
for i in range(n):
16+
for j in range(1<<i, 1<<n, 1<<(i+1)):
17+
last[j] = i
18+
19+
@lru_cache(None)
20+
def dp(m):
21+
if m & (m-1) == 0: return m != 0
22+
l, f = last[m], first[m]
23+
lb, fb = 1<<l, 1<<f
24+
return max(dp(m-lb), dp(m-fb), dp(m-lb-fb) + (s[l] == s[f]) * 2)
25+
26+
ans = 0
27+
for m in range(1, 1<<n):
28+
ans = max(ans, dp(m)*dp((1<<n) - 1 - m))
29+
30+
return ans

0 commit comments

Comments
 (0)