[Math] leetcode 1041 Robot Bounded In Circle

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;
    }
};

猜你喜欢

转载自www.cnblogs.com/fish1996/p/11373676.html