zoukankan      html  css  js  c++  java
  • LeetCode 657. Judge Route Circle

    problem:

     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

    first:

    import java.util.Stack;

    class Solution {
        public boolean judgeCircle(String moves) {
            Stack<Character> stack = new Stack<Character>();
            for(int i=0;i<moves.length();i++){
                if(stack.size()==0){
                    stack.push(moves.charAt(i));
                } else if(stack.peek()=='U'&&moves.charAt(i)=='D'||
                          stack.peek()=='D'&&moves.charAt(i)=='U'||
                          stack.peek()=='L'&&moves.charAt(i)=='R'||
                          stack.peek()=='R'&&moves.charAt(i)=='L'){
                    stack.pop();
                } else {
                    stack.push(moves.charAt(i));
                }
            }
            
            return stack.empty() ? true : false;
        }
    }

     result:

    Submission Result: Wrong Answer 

     

    Input: "RLUURDDDLU"
    Output: false
    Expected: true

    2:

    import java.util.Stack;
    
    class Solution {
        public boolean judgeCircle(String moves) {
            int rCounts=0, lCounts=0,dCounts=0,uCounts=0;
            for(int i=0;i<moves.length();i++){
                if(moves.charAt(i)=='U'){
                    uCounts++;
                }
                if(moves.charAt(i)=='D'){
                    dCounts++;
                }
                if(moves.charAt(i)=='R'){
                    rCounts++;
                }
                if(moves.charAt(i)=='L'){
                    lCounts++;
                }
            }
            
            return uCounts==dCounts&&rCounts==lCounts ? true : false;
        }
    }

    result:

    参考答案:

    class Solution {
        public boolean judgeCircle(String moves) {
            int x = 0, y = 0;
            for (char move: moves.toCharArray()) {
                if (move == 'U') y--;
                else if (move == 'D') y++;
                else if (move == 'L') x--;
                else if (move == 'R') x++;
            }
            return x == 0 && y == 0;
        }
    }

    result:

    retry:

    class Solution {
        public boolean judgeCircle(String moves) {
            int rCounts=0, lCounts=0,dCounts=0,uCounts=0;
            char[] charArray = moves.toCharArray();
            for(int i=0;i<charArray.length;i++){
                if(charArray[i]=='U'){
                    uCounts++;
                }
                if(charArray[i]=='D'){
                    dCounts++;
                }
                if(charArray[i]=='R'){
                    rCounts++;
                }
                if(charArray[i]=='L'){
                    lCounts++;
                }
            }
            
            return uCounts==dCounts&&rCounts==lCounts ? true : false;
        }
    }

    result:

    conclusion:

    可见把String转换成char数组后效率更高。

  • 相关阅读:
    Idea启动多服务时的Dashboard展示
    通过maven动态配置spring boot配置文件
    辅域抢夺五大角色命令
    H3C交换机堆叠技术
    KMS激活专用:所有Windows版本的GVLK密钥对照表
    Windows Server 2012从Evaluation版转成正式版
    u盘装系统无法引导
    [调优]彻底解决RDP连接过程缓慢的问题
    [排错]无法初始化 vGPU“grid_p40-1q”的插件“/usr/lib64/vmware/plugin/libnvidia-vgx.so”
    Virtual Apps and Desktops 7 1912 LTSR集成DB迁移到SQL Server 2016 AlwaysOn生产环境
  • 原文地址:https://www.cnblogs.com/hzg1981/p/8945438.html
Copyright © 2011-2022 走看看