problem: https://leetcode.com/problems/robot-bounded-in-circle/
As the hint mentions, we can keep track of the robot's position, when it finally return to the original position, or its direction is changed( no longer facing north), we can return true.
class Solution { public: vector<pair<int,int>> dir {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; bool isRobotBounded(string instructions) { pair<int,int> pos { 0, 0 }; int n = instructions.size(); int cur = 0; // cout << "n = " << n << endl; for(int i = 0; i < n ;i++) { char ch = instructions[i]; // cout << ch << " " << cur << endl; if(ch == 'G') { pos.first += dir[cur].first; pos.second += dir[cur].second; } else if(ch == 'L') { cur = (cur + 1) % 4; } else if(ch == 'R') { cur = (cur - 1 + 4) % 4; } } if(pos == make_pair(0,0)) return true; if(cur != 0) return true; return false; } };