Skip to content

Commit 4803b1e

Browse files
authored
Create count-the-number-of-winning-sequences.py
1 parent 7b590e4 commit 4803b1e

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Time: O(n^2)
2+
# Space: O(n)
3+
4+
import collections
5+
6+
7+
# dp
8+
class Solution(object):
9+
def countWinningSequences(self, s):
10+
"""
11+
:type s: str
12+
:rtype: int
13+
"""
14+
MOD = 10**9+7
15+
lookup = {x:i for i, x in enumerate("FWE")}
16+
dp = [collections.defaultdict(int) for _ in xrange(3)]
17+
for i, c in enumerate(s):
18+
new_dp = [collections.defaultdict(int) for _ in xrange(3)]
19+
x = lookup[c]
20+
for j in xrange(3):
21+
diff = (j-x+1)%3-1
22+
if i == 0:
23+
new_dp[j][diff] = 1
24+
continue
25+
for k in xrange(3):
26+
if k == j:
27+
continue
28+
for v, c in dp[k].iteritems():
29+
new_dp[j][v+diff] = (new_dp[j][v+diff]+c)%MOD
30+
dp = new_dp
31+
return reduce(lambda accu, x: (accu+x)%MOD, (c for j in xrange(3) for v, c in dp[j].iteritems() if v >= 1), 0)
32+

0 commit comments

Comments
 (0)