1573. Number of Ways to Split a String
On This Page
class Solution:
def numWays(self, s: str) -> int:
def find(x):
t = 0
for i, c in enumerate(s):
t += int(c == '1')
if t == x:
return i
cnt, m = divmod(sum(c == '1' for c in s), 3)
if m:
return 0
n = len(s)
mod = 10**9 + 7
if cnt == 0:
return ((n - 1) * (n - 2) // 2) % mod
i1, i2 = find(cnt), find(cnt + 1)
j1, j2 = find(cnt * 2), find(cnt * 2 + 1)
return (i2 - i1) * (j2 - j1) % (10**9 + 7)