2147. Number of Ways to Divide a Long Corridor (Hard) - TengnanYao/daily_leetcode GitHub Wiki
class Solution:
def numberOfWays(self, corridor: str) -> int:
count = corridor.count("S")
if count == 0 or count % 2 == 1:
return 0
i, j = 0, len(corridor) - 1
while corridor[i] != "S":
i += 1
while corridor[j] != "S":
j -= 1
result = p = flag = 1
for c in corridor[i : j]:
if c == "S":
if flag:
result *= p
p = 1
flag ^= 1
else:
if flag:
p += 1
return result % (10 ** 9 + 7)