На бесконечной плоскости робот изначально стоит в точке (0, 0) и смотрит на север. Робот может получить одну из трех инструкций:

  • "G": идите прямо 1 единицу;
  • "L": повернуть на 90 градусов влево;
  • "R": повернуть на 90 градусов вправо.

Робот выполняет instructions по порядку и повторяет их вечно.

Вернуть true тогда и только тогда, когда на плоскости существует круг, из которого робот никогда не выходит.

Пример 1:

Input: instructions = "GGLLGG"
Output: true
Explanation: The robot moves from (0,0) to (0,2), turns 180 degrees, and then returns to (0,0).
When repeating these instructions, the robot remains in the circle of radius 2 centered at the origin.

Пример 2:

Input: instructions = "GG"
Output: false
Explanation: The robot moves north indefinitely.

Пример 3:

Input: instructions = "GL"
Output: true
Explanation: The robot moves from (0, 0) -> (0, 1) -> (-1, 1) -> (-1, 0) -> (0, 0) -> ...

Ограничения:

  • 1 <= instructions.length <= 100
  • instructions[i] is 'G', 'L' or, 'R'.

Решение:

Если мы в одной точке, то можем сделать круг.

Мы не можем сделать круг, если мы все еще смотрим на северную сторону, а не в начало координат, иначе во всех случаях мы можем сделать круг.

Поэтому следите за стороной и расстоянием (по вертикали и горизонтали), хотя вы можете использовать только одну переменную вместо вертикальной и горизонтальной по отдельности, потому что мы просто проверяем, находится ли она в том же положении или нет и обращена ли она к северной стороне.

Заключение:

Это проблема от 09 января 2022 г. — проблема дня на Leetcode, если вы хотите больше, пожалуйста, следите за обновлениями.

Прокомментируйте свои ценные мысли или любые предложения по модификации решения.