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
成功提交:方法一
class Solution {
public boolean judgeCircle(String moves) {
int flagUD = 0;
int flagLR = 0;
for(int i =0;i<moves.length();i++){
char ch = moves.charAt(i);
//将字符串中的字符单独比较
if(ch == 'U'){
flagUD++;
}else if(ch == 'D'){
flagUD--;
}else if(ch == 'L'){
flagLR ++;
}else if(ch == 'R'){
flagLR --;
}
}
if(flagUD == 0 && flagLR == 0){
return true;
}else{
return false;
}
}
}
1.单个字符比较时候,UDLR都应该被单引号所包围
错误代码
错误代码
class Solution {
public boolean judgeCircle(String moves) {
char [] stringArr = moves.toCharArray(); 将字符串转换成char数组,
int flagUD = 0;
int flagLR = 0;
for(int i =0;i<stringArr.length;i++){
if(stringArr[i] == "U"){
flagUD++;
}else if(stringArr[i] == "D"){
flagUD--;
}else if(stringArr[i] == "L"){
flagLR ++;
}else if(stringArr[i] == "R"){
flagLR --;
}
}
if(flagUD == 0 && flagLR == 0){
return true;
}else{
return false;
}
}
}
成功提交:方法二
class Solution {
public boolean judgeCircle(String moves) {
char [] stringArr = moves.toCharArray();
//将字符串转换成char数组,
int flagUD = 0;
int flagLR = 0;
for(int i =0;i<stringArr.length;i++){
if(stringArr[i] == 'U'){
flagUD++;
}else if(stringArr[i] == 'D'){
flagUD--;
}else if(stringArr[i] == 'L'){
flagLR ++;
}else if(stringArr[i] == 'R'){
flagLR --;
}
}
if(flagUD == 0 && flagLR == 0){
return true;
}else{
return false;
}
//方法三:
return flagUD==0 && flagLR == 0;
}
}
方法一:通过时间为19ms
方法二:通过时间为16ms
方法三:通过时间为14ms
总结:字符串转换成字符比较有两种比较方法,一种是转换成char数组
char [] stringArr = moves.toCharArray();第二种就是每次都取出其中的一个字符来比较char ch = moves.charAt(i);两种方法两种思路。