可能是很简单的一道hard题了,思路很简单,卡在了对于 $long$ 数据类型的处理上…说明对这方面还不是很熟悉。

主要是这道题没有要求时间复杂度,如果限制在O(1),应该会更头脑风暴一些。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

class Solution {
public int numberOfWays(String corridor) {
ArrayList<Long> sites = new ArrayList<Long>();
int len = corridor.length();

for(int i = 0; i < len; i++){
if(corridor.charAt(i) == 'S'){
sites.add((long)i);
}
}

if(( sites.size() % 2) != 0 || sites.size() <= 1){
return 0;
}


long n = (long) 1L;
for(int i = 1; i < sites.size() - 1; i += 2){
n = 1L * n * (sites.get(i+1) - sites.get(i));
n = n % 1_000_000_007L;
}

return (int) n;
}
}