# 2211. Count Collisions on a Road

• Time: $O(n)$
• Space: $O(1)$
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class Solution { public: int countCollisions(string directions) { int l = 0; int r = directions.length() - 1; while (l < directions.length() && directions[l] == 'L') ++l; while (r >= 0 && directions[r] == 'R') --r; return count_if(begin(directions) + l, begin(directions) + r + 1, [](char c) { return c != 'S'; }); } }; 
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class Solution { public int countCollisions(String directions) { int ans = 0; int l = 0; int r = directions.length() - 1; while (l < directions.length() && directions.charAt(l) == 'L') ++l; while (r >= 0 && directions.charAt(r) == 'R') --r; for (int i = l; i <= r; ++i) if (directions.charAt(i) != 'S') ++ans; return ans; } } 
  1 2 3 4 5 6 7 8 9 10 11 12 class Solution: def countCollisions(self, directions: str) -> int: l = 0 r = len(directions) - 1 while l < len(directions) and directions[l] == 'L': l += 1 while r >= 0 and directions[r] == 'R': r -= 1 return sum(c != 'S' for c in directions[l:r + 1])