Skip to content

Latest commit

 

History

History
78 lines (74 loc) · 2.28 KB

D-17submission.md

File metadata and controls

78 lines (74 loc) · 2.28 KB

👺 Question

On an infinite plane, a robot initially stands at (0, 0) and faces north. The robot can receive one of three instructions:

"G": go straight 1 unit;
"L": turn 90 degrees to the left;
"R": turn 90 degress to the right.
The robot performs the instructions given in order, and repeats them forever.

Return true if and only if there exists a circle in the plane such that the robot never leaves the circle.
Example 1:

Input: "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.
Example 2:
Input: "GG"
Output: false
Explanation:
The robot moves north indefinitely.
Example 3:
Input: "GL"
Output: true
Explanation:
The robot moves from (0, 0) -> (0, 1) -> (-1, 1) -> (-1, 0) -> (0, 0) -> ...

🍱 Solution


class Solution {
    public boolean isRobotBounded(String instructions) {
        if(instructions==null)
            return false;
        int x=0,y=0;
        String dir="North";
        for(char ch:instructions.toCharArray()){
            if(ch=='G'){
                if(dir.equals("North"))
                    y+=1;
                else if(dir.equals("South"))
                    y-=1;
                else if(dir.equals("West"))
                    x-=1;
                else
                    x+=1;
            }
            else if(ch=='L'){
                if(dir.equals("North"))
                    dir="West";
                else if(dir.equals("South"))
                    dir="East";
                else if(dir.equals("West"))
                    dir="South";
                else
                    dir="North";
            }
            else if(ch=='R'){
               if(dir.equals("North"))
                    dir="East";
                else if(dir.equals("South"))
                    dir="West";
                else if(dir.equals("West"))
                    dir="North";
                else
                    dir="South";   
            }
        }
        if(x==0 && y==0)
            return true;
        if(dir.equals("North"))
            return false;
        return true;
    }
}