C++机器人返回原点
假设有一个机器人,其起始位置为 (0, 0)。如果我们有一系列机器人的移动指令,我们需要检查这个机器人完成所有移动后是否最终停留在 (0, 0) 位置。
移动序列以字符串的形式给出,字符 moves[i] 代表其第 i 次移动。符号 R 代表向右移动,L 代表向左移动,U 代表向上移动,D 代表向下移动。如果机器人完成所有移动后返回原点,则返回 true;否则返回 false。
例如,如果输入为 "RRULLD",则输出为 true,向右移动两格,然后向上移动一格,然后向左移动两格,最后向下移动一格,最终回到起始位置。
为了解决这个问题,我们将遵循以下步骤:
l := moves 数组的大小
如果 l 等于 0,则:
返回 true
lft := 0, up := 0
for i := 0, i < l, i++ do:
如果 moves[i] 等于 'L',则:
lft++
如果 moves[i] 等于 'R',则:
lft--
如果 moves[i] 等于 'U',则:
up++
如果 moves[i] 等于 'D',则:
up--
如果 lft 等于 0 且 up 等于 0,则:
返回 true
返回 true
示例
让我们看下面的实现来更好地理解:
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool judgeCircle(string moves) {
int l = moves.length();
if (l == 0) {
return true;
}
int lft = 0, up = 0;
for (int i = 0; i < l; i++) {
if (moves[i] == 'L') {
lft++;
}
if (moves[i] == 'R') {
lft--;
}
if (moves[i] == 'U') {
up++;
}
if (moves[i] == 'D') {
up--;
}
}
if (lft == 0 && up == 0) {
return true;
}
return false;
}
};
main(){
Solution ob;
cout << (ob.judgeCircle("RRULLD"));
}输入
"RRULLD"
输出
1
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP