-
Notifications
You must be signed in to change notification settings - Fork 154
/
Copy pathrobot-return-to-origin.js
50 lines (46 loc) · 1.47 KB
/
robot-return-to-origin.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/**
* Robot Return to Origin
*
* There is a robot starting at position (0, 0), the origin, on a 2D plane. Given a sequence of its moves, judge if
* this robot ends up at (0, 0) after it completes its moves.
*
* The move sequence is represented by a string, and the character moves[i] represents its ith move. Valid moves are R
* (right), L (left), U (up), and D (down). If the robot returns to the origin after it finishes all of its moves,
* return true. Otherwise, return false.
*
* Note: The way that the robot is "facing" is irrelevant. "R" will always make the robot move to the right once, "L"
* will always make it move left, etc. Also, assume that the magnitude of the robot's movement is the same for each
* move.
*
* Example 1:
*
* Input: "UD"
* Output: true
*
* Explanation: The robot moves up once, and then down once. All moves have the same magnitude, so it ended up at the
* origin where it started. Therefore, we return true.
*
* Example 2:
*
* Input: "LL"
* Output: false
*
* Explanation: The robot moves left twice. It ends up two "moves" to the left of the origin. We return false because it
* is not at the origin at the end of its moves.
*/
/**
* @param {string} moves
* @return {boolean}
*/
const judgeCircle = moves => {
let x = 0;
let y = 0;
for (let c of moves) {
if (c === 'U') y++;
else if (c === 'D') y--;
else if (c === 'R') x++;
else if (c === 'L') x--;
}
return x === 0 && y === 0;
};
export { judgeCircle };