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
广告