Judge Route Circle
2017-08-15 00:00
393 查看
问题:
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
Example 1:
Example 2:
解决:
【注】 题意是机器人初始在(0,0)位置,判断该机器人上下左右移动之后,是否又回到了原位置。
① 可以返回原点的情况该字符串的长度一定可以被2整除,使用hash table进行上下左右的匹配。
public class Solution { // 31ms
public boolean judgeCircle(String moves) {
if(moves == null || moves.length() == 0) return true;
int hash[] = new int[26];
int len = moves.length();
for (int i = 0;i < len ;i ++ ) {
if(moves.charAt(i) == 'U') hash['U' - 'A'] ++;
if(moves.charAt(i) == 'D') hash['U' - 'A'] --;
if(moves.charAt(i) == 'L') hash['L' - 'A'] ++;
if(moves.charAt(i) == 'R') hash['L' - 'A'] --;
}
for(int n : hash){
if(n != 0) return false;
}
return true;
}
}
② 简化版
class Solution {//16ms
public boolean judgeCircle(String moves) {
int pu = 0;
int pl = 0;
for(char c : moves.toCharArray()){
if(c == 'U') pu ++;
if(c == 'D') pu --;
if(c == 'L') pl ++;
if(c == 'R') pl --;
}
return pu == 0 && pl == 0;
}
}
③ 进化版
public class Solution { // 9ms
public boolean judgeCircle(String moves) {
int[] hash = new int[26];
for (char c : moves.toCharArray()){
hash[c - 'A'] ++;
}
if (hash['L' - 'A'] == hash['R' - 'A'] && hash['U' - 'A'] == hash['D' - 'A']) return true;
return false;
}
}
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
解决:
【注】 题意是机器人初始在(0,0)位置,判断该机器人上下左右移动之后,是否又回到了原位置。
① 可以返回原点的情况该字符串的长度一定可以被2整除,使用hash table进行上下左右的匹配。
public class Solution { // 31ms
public boolean judgeCircle(String moves) {
if(moves == null || moves.length() == 0) return true;
int hash[] = new int[26];
int len = moves.length();
for (int i = 0;i < len ;i ++ ) {
if(moves.charAt(i) == 'U') hash['U' - 'A'] ++;
if(moves.charAt(i) == 'D') hash['U' - 'A'] --;
if(moves.charAt(i) == 'L') hash['L' - 'A'] ++;
if(moves.charAt(i) == 'R') hash['L' - 'A'] --;
}
for(int n : hash){
if(n != 0) return false;
}
return true;
}
}
② 简化版
class Solution {//16ms
public boolean judgeCircle(String moves) {
int pu = 0;
int pl = 0;
for(char c : moves.toCharArray()){
if(c == 'U') pu ++;
if(c == 'D') pu --;
if(c == 'L') pl ++;
if(c == 'R') pl --;
}
return pu == 0 && pl == 0;
}
}
③ 进化版
public class Solution { // 9ms
public boolean judgeCircle(String moves) {
int[] hash = new int[26];
for (char c : moves.toCharArray()){
hash[c - 'A'] ++;
}
if (hash['L' - 'A'] == hash['R' - 'A'] && hash['U' - 'A'] == hash['D' - 'A']) return true;
return false;
}
}
相关文章推荐
- Judge Route Circle
- leetcode657——Judge Route Circle
- LeetCode Judge Route Circle
- LeedCode[657]Judge Route Circle
- Leetcode 657 Judge Route Circle回到原点
- Leetcode代码学习周记——Judge Route Circle
- [LeetCode] Judge Route Circle 判断路线绕圈
- Judge Route Circle
- String-657-Judge Route Circle
- LeetCode之657. Judge Route Circle
- 【LeetCode】Judge Route Circle 判断路径是否成环
- Judge Route Circle
- 【LeetCode】657 Judge Route Circle
- LeetCode 657 Judge Route Circle 判断路线圈
- LeetCode(657)Judge Route Circle
- Judge Route Circle
- Judge Route Circle(leetcode)
- Judge Route Circle
- Judge Route Circle
- leetcode之 Judge Route Circle