题目浅析

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

  • 简单地说,就是给一个一维数组,其中有三个值,L, S, R, 分别代表向左,静止,向右的车子,如果车碰撞静止车,则碰撞次数加一,如果两个动的车相碰,则碰撞次数加二。求碰撞次数之和。

思路分享

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

  • 参考题解
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
27
28
29
30
class Solution:
def countCollisions(self, directions: str) -> int:
directions = directions.lstrip("L")
directions = directions.rstrip("R")
return len(directions) - directions.count("S")

# 用栈模拟碰撞情况
# ans = 0
# st = []

# for car in directions:
# if car == "R":
# st.append("R")
# continue
# if car == "S":
# while st and st[-1] == "R":
# ans += 1
# st.pop()
# st.append("S")
# continue
# if st and st[-1] == "R":
# while st and st[-1] == "R":
# ans += 1
# st.pop()
# ans += 1
# st.append("S")
# elif st and st[-1] == "S":
# ans += 1

# return ans