一、题目描述
初始位置 (0, 0) 处有一个机器人。给出它的一系列动作,判断这个机器人的移动路线是否形成一个圆圈,换言之就是判断它是否会移回到原来的位置。
移动顺序由一个字符串表示。每一个动作都是由一个字符来表示的。机器人有效的动作有 R(右),L(左),U(上)和 D(下)。输出应为 true 或 false,表示机器人移动路线是否成圈。
示例 1:
- 输入: “UD”
- 输出: true
示例 2:
- 输入: “LL”
- 输出: false
二、题目分析
用两个变量分别记录横(x)纵(y)坐标,初始值为0。经过上下左右移动增减后判断两个变量值是否仍为0即可。
三、Java代码
class Solution {
public boolean judgeCircle(String moves) {
char move_temp[] = moves.toCharArray();
int x = 0;
int y = 0;
for(int i = 0;i<move_temp.length;i++) {
if(move_temp[i]=='R') //向右移动横坐标x加1
x++;
else if (move_temp[i]=='L') //向左移动横坐标x减1
x--;
else if (move_temp[i]=='U') //向上移动纵坐标x加1
y++;
else if(move_temp[i]=='D') //向下移动纵坐标x减1
y--;
}
return (x==0)&&(y==0); //用&&而不是&来提高效率
}
}
四、其他
中文题目链接:https://leetcode-cn.com/problems/judge-route-circle/
英文题目链接:https://leetcode.com/problems/judge-route-circle/
Runtime: 13 ms
想法不够优化,欢迎大家留言交流~