摘要:题目描述解决方案解题思路设置初始坐标为根据上下左右指示调整坐标判断最后坐标的位置是否为起始位置。加强版循环使用比判断快方法计算向左和向右的次数是否相同,计算向上和向下的次数相同。若都相同,则回到原地。
题目描述
Initially, there is a Robot at position (0, 0). Given a sequence of its moves, judge if this robot makes a circle, which means it moves back to the original place.
The move sequence is represented by a string. And each move is represent by a character. The valid robot moves are R (Right), L (Left), U (Up) and D (down). The output should be true or false representing whether the robot makes a circle.
Example 1:
Input: "UD" Output: true
Example 2:
Input: "LL" Output: false解决方案 - C++
class Solution { public: bool judgeCircle(string moves) { int x = 0, y = 0; for(int i = 0; i < moves.length(); i++){ if(moves.substr(i, 1) == "R"){ x--; } if(moves.substr(i, 1) == "L"){ x++; } if(moves.substr(i, 1) == "U"){ y++; } if(moves.substr(i, 1) == "D"){ y--; } } if(x == 0 && y == 0){ return true; }else{ return false; } } };
解题思路
设置初始坐标为(0,0),根据上U下D左L右R指示调整坐标,判断最后坐标的位置是否为起始位置。
Submission Details
62 / 62 test cases passed. Status: Accepted Runtime: 39 ms[C++] [Java] Clean Code
Tips:
1.加强版for循环
2.使用switch比if判断快
3.Java toCharArray()方法
C++
class Solution { public: bool judgeCircle(string moves) { int v = 0; int h = 0; for (char ch : moves) { switch (ch) { case "U" : v++; break; case "D" : v--; break; case "R" : h++; break; case "L" : h--; break; } } return v == 0 && h == 0; } };
Submission Details
62 / 62 test cases passed. Status: Accepted Runtime: 19 ms
Java
class Solution{ public boolean judgeCircle(String moves) { int v = 0, h = 0; for (char move : moves.toCharArray()) { switch (move) { case "U": v++; break; case "D": v--; break; case "R": h++; break; case "L": h--; break; } } return v == 0 && h == 0; } }
Submission Details
62 / 62 test cases passed. Status: Accepted Runtime: 11 msPython one liner
class Solution(object): def judgeCircle(self, moves): """ :type moves: str :rtype: bool """ return moves.count("L") == moves.count("R") and moves.count("U") == moves.count("D")
Submission Details
62 / 62 test cases passed. Status: Accepted Runtime: 42 ms
计算向左和向右的次数是否相同,计算向上和向下的次数相同。若都相同,则回到原地。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67723.html
摘要:题目链接题目分析输入一串指令操作机器人,判断执行完指令后,能否回到原点。思路判断向上移动的次数是否等于向下移动的次数,且向左次数是否等于向右次数。但是,如果在指令中没有出现所有种方向的话,在判断时会获取不到数值。 657. Robot Return to Origin 题目链接 657. Robot Return to Origin 题目分析 输入一串指令操作机器人,判断执行完指令后,...
摘要:若函数不能执行有效的转换,返回。如果数值超过可表示的范围,则返回或。示例输入输出解释转换截止于数字,因为它的下一个字符不为数字。 这是我参与11月更文挑战的第12天。一、写在前面LeetCode 第一题两数之和传输门:听说你还在写双层for循环解两数之和?LeetCode 第二题两数之和传输门:两个排序数组的中...
摘要:解题思路模拟题就按照题目意思来做题目分三种情况那我们也分三种情况通过设置用来标志第一位是大写还是小写小写的话直接通过后面的都不能大写来判断大写的话用记录后面的大写的个数为或者为字符串长度才符合要求代码如下代码 ...
摘要:找规律复杂度时间空间思路仔细观察格雷码当时当时当时可以发现,的格雷码,就是的格雷码,再加上它们的逆序前面多一个。 Grey Code The gray code is a binary numeral system where two successive values differ in only one bit. Given a non-negative integer n re...
LeetCode version Problem Given a non-empty list of words, return the k most frequent elements. Your answer should be sorted by frequency from highest to lowest. If two words have the same frequency, t...
阅读 903·2023-04-26 01:34
阅读 3340·2023-04-25 20:58
阅读 3193·2021-11-08 13:22
阅读 2092·2019-08-30 14:17
阅读 2497·2019-08-29 15:27
阅读 2649·2019-08-29 12:45
阅读 2960·2019-08-29 12:26
阅读 2790·2019-08-28 17:51