Day 21 - Robot Return to Origin

大家好,我是毛毛。ヾ(´∀ ˋ)ノ
废话不多说开始今天的解题Day~


657. Robot Return to Origin

Question

There is a robot starting at the 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.

You are given a string moves that represents the move sequence of the robot where moves[i] represents its ith move. Valid moves are 'R' (right), 'L' (left), 'U' (up), and 'D' (down).

Return true if the robot returns to the origin after it finishes all of its moves, or false otherwise.

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

Example1

Input: moves = "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.

Example2

Input: moves = "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.

Example3

Input: moves = "RRDD"
Output: false

Example4

Input: moves = "LDRRLRUULR"
Output: false

Constraints

  • 1 <= moves.length <= 2 * 10^4
  • moves only contains the characters 'U', 'D', 'L' and 'R'.

解题

题目

首先先简单的翻译一下题目
给一台机器人,会根据输入的上下左右来移动,要判断输入的指令会不会让机器人回到初始位置。

Think

作法大致上是这样

  • 分x, y座标,读到'R'=> +1, 'L'=> -1, 'U'=> 1, 'D'=> -1,最後判断座标是不是有任何一个是非0的值。
  • C的程序睡醒再补上。

Code

Python

class Solution:
    def judgeCircle(self, moves: str) -> bool:
        dict_moves = {'R':1, 'L':-1, 'U':1, 'D':-1}
        loc = [0, 0]
        
        for index in range(len(moves)):
            if moves[index] == 'R' or moves[index] == 'L':
                loc[0] += dict_moves[moves[index]]
                
            elif moves[index] == 'U' or moves[index] == 'D':
                loc[1] += dict_moves[moves[index]]
        
        if loc[0] != 0 or loc[1] != 0:
            return False
        else:
            return True

C

bool judgeCircle(char * moves){
    int loc[2] = {0};

    for (int index=0 ; index<strlen(moves) ; index++){
        if (moves[index] == 'R'){
            loc[0]++;
        } else if (moves[index] == 'L'){
            loc[0]--;
        } else if (moves[index] == 'U'){
            loc[1]++;
        } else if (moves[index] == 'D'){
            loc[1]--;
        }
    }
  
    if (loc[0] != 0 || loc[1] != 0){
        return false;
    } else {
        return true;
    }
        
}

Result

  • Python

  • C

大家明天见/images/emoticon/emoticon29.gif


<<:  [Day 21] 阿嬷都看得懂的满版横幅怎麽写与 normalize.css

>>:  Day 21 - 物件导向与向量2 - vector

在 Fedora 34 上轻松安装呒虾米

对我来说,有段时间没有使用,Fedora 所呈现出来的「桌面行为」(是这个说法吗?)也有其独道迷人之...

[Day03] Vue i18n - Message Format Syntax

红框中的句子 Welcome to Your Vue.js App 如果我们想要将其中的 Vue....

Episode 2 - 关於 COBOL

如果画面太小或看不清楚,可移驾至 https://www.youtube.com/watch?v=...

Day 28: Divide and Conquer

这是什麽 分而治之,分治法! 分治法的步骤是: 将一个问题拆解成多个可以处理的小问题後 处理、击破每...

Day.11 搞懂主从架构- 主从复制(Master Slave Replication)

在前一篇我们提到binlog可以当作资料恢复的重要纪录,今天要介绍的是binlog另一个主要功能用...