题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个长廊(数组),其中有座位(S)和植物(P),现在需要一个或多个屏风,保证分隔后每段都有且仅有两个座位,求这么分隔的方案数。

思路分享

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution:
def numberOfWays(self, corridor: str) -> int:
MOD = 1_000_000_007
cnt_s = last_s = 0
ans = 1
for i, c in enumerate(corridor):
if c == "S":
cnt_s += 1
if cnt_s > 2 and cnt_s % 2 == 1:
ans = ans * (i-last_s) % MOD
last_s = i
if cnt_s == 0 or cnt_s % 2 == 1:
return 0
return ans