657:机器人能否返回原点

This commit is contained in:
轩辕龙儿 2022-03-28 17:23:38 +08:00
parent 3839ed4c93
commit 0f5c11beba
2 changed files with 102 additions and 0 deletions

View File

@ -0,0 +1,69 @@
//在二维平面上有一个机器人从原点 (0, 0) 开始给出它的移动顺序判断这个机器人在完成移动后是否在 (0, 0) 处结束
//
// 移动顺序由字符串 moves 表示字符 move[i] 表示其第 i 次移动机器人的有效动作有 RLU D
//
// 如果机器人在完成所有动作后返回原点则返回 true否则返回 false
//
// 注意机器人面朝的方向无关紧要 R 将始终使机器人向右移动一次L 将始终向左移动等此外假设每次移动机器人的移动幅度相同
//
//
//
// 示例 1:
//
//
//输入: moves = "UD"
//输出: true
//解释机器人向上移动一次然后向下移动一次所有动作都具有相同的幅度因此它最终回到它开始的原点因此我们返回 true
//
// 示例 2:
//
//
//输入: moves = "LL"
//输出: false
//解释机器人向左移动两次它最终位于原点的左侧距原点有两次 移动 的距离我们返回 false因为它在移动结束时没有返回原点
//
//
//
// 提示:
//
//
// 1 <= moves.length <= 2 * 10
// moves 只包含字符 'U', 'D', 'L' 'R'
//
// Related Topics 字符串 模拟 👍 225 👎 0
package leetcode.editor.cn;
//657:机器人能否返回原点
public class RobotReturnToOrigin {
public static void main(String[] args) {
Solution solution = new RobotReturnToOrigin().new Solution();
// TO TEST
}
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public boolean judgeCircle(String moves) {
int[] counts = new int[2];
for (char ch : moves.toCharArray()) {
switch (ch) {
case 'R':
counts[0]++;
break;
case 'L':
counts[0]--;
break;
case 'U':
counts[1]++;
break;
default:
counts[1]--;
break;
}
}
return counts[0] == 0 && counts[1] == 0;
}
}
//leetcode submit region end(Prohibit modification and deletion)
}

View File

@ -0,0 +1,33 @@
<p>在二维平面上,有一个机器人从原点 <code>(0, 0)</code> 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在<strong>&nbsp;<code>(0, 0)</code> 处结束</strong></p>
<p>移动顺序由字符串&nbsp;<code>moves</code>&nbsp;表示。字符 <code>move[i]</code> 表示其第 <code>i</code> 次移动。机器人的有效动作有&nbsp;<code>R</code>(右),<code>L</code>(左),<code>U</code>(上)和 <code>D</code>(下)。</p>
<p>如果机器人在完成所有动作后返回原点,则返回 <code>true</code>。否则,返回 <code>false</code></p>
<p><strong>注意:</strong>机器人“面朝”的方向无关紧要。 <code>“R”</code> 将始终使机器人向右移动一次,<code>“L”</code> 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。</p>
<p>&nbsp;</p>
<p><strong>示例 1:</strong></p>
<pre>
<strong>输入:</strong> moves = "UD"
<strong>输出:</strong> true
<strong>解释:</strong>机器人向上移动一次,然后向下移动一次。所有动作都具有相同的幅度,因此它最终回到它开始的原点。因此,我们返回 true。</pre>
<p><strong>示例 2:</strong></p>
<pre>
<strong>输入:</strong> moves = "LL"
<strong>输出:</strong> false
<strong>解释:</strong>机器人向左移动两次。它最终位于原点的左侧,距原点有两次 “移动” 的距离。我们返回 false因为它在移动结束时没有返回原点。</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= moves.length &lt;= 2 * 10<sup>4</sup></code></li>
<li><code>moves</code>&nbsp;只包含字符&nbsp;<code>'U'</code>,&nbsp;<code>'D'</code>,&nbsp;<code>'L'</code>&nbsp;&nbsp;<code>'R'</code></li>
</ul>
<div><div>Related Topics</div><div><li>字符串</li><li>模拟</li></div></div><br><div><li>👍 225</li><li>👎 0</li></div>