zoukankan      html  css  js  c++  java
  • LeetCode9-回文数(增长数组)简单题

    可以看出,负数肯定不是回文数

    难的地方是这个要求。

    先循环一次,看这个数字有多少位。

    每次将右移位后的首位和取余之后的最后一位比较。

    计算一下循环 

            int x = 12345;
    
            int count = 0;
    
            while(x>0){
                x/=10;
                count++;
            }
    
            System.out.println(count);

    验证一下,看来移位是不行的。

    移位是将二进制的111000000这些移位,不是简单的抹去右边的几位数字

    System.out.println(12345>>2);

     还是用除以10吧。

    一个没考虑到的地方

    比如100001

    第二次比较是10000

    虽然除的东西变少了,但是最高位还是1,并且会一直都是1.

    所以应该改成,除了n-i-1次10之后,再对10取余。

    这样就能保证当前这个整数一定是正确的了。因为有原来的最高位+自己,哪怕自己是0也没关系

    但是10和0,对10取余都是0,会错。

    如1001

    末尾是1 对应的是10

    第二轮迭代 末尾是0 对应的还是10

    这样改

    维护这样一个数,这个数是从最高位开始增长的。

    比如1001。那么就是1,10

    每次取最后一个数和原数字的最后一位比较即可。

    真是灵光一闪啊!

    public static boolean isPalindrome(int x) {
    
            //负数肯定不是
            if(x<0)
                return false;
    
            //个位数肯定是
            if(x>=0&&x<=9)
                return true;
    
            int num = x;
            int count = 0;
    
            while(num>0){
                num/=10;
                count++;
            }
    
            int des = 1;
    
            //计算获取最高位,需要除多少
            for(int i=1;i<count;i++){
                des*=10;
            }
    
            //只需比较到中间就好了
            int middle = count/2;
            //因为是0开始的,<即可
    
            //num是维护从最高位开始的数字的,所以num不变
            num=x;
            for(int i=0;i<middle;i++){
    
                //计算首位
                int high = (num/des)%10;
    
                //计算末尾
                int low = x%10;
                if(high!=low)
                    return false;
    
                x/=10;
                //需要除10的次数减少了
                des/=10;
    
    
            }
    
            return true;
    
    
        }

    排最前面的都是通过反转字符串的方法的。

    只能说维护两个数组,真的利器。

  • 相关阅读:
    esriFeatureType与esriGeometryType的区别与联系
    AO创建IFeature的两种方法
    ArcEngine查询、添加、删除要素的方法
    AE CreateFeatureClass 创建shp. 删除shp. 向shp中添加要素
    21OGNL与ValueStack(VS)-静态方法访问
    20.OGNL与ValueStack(VS)-普通方法访问
    19.OGNL与ValueStack(VS)-OGNL入门
    18.OGNL与ValueStack(VS)-值栈入门
    17.在Action获取Scope对象
    15.Result配置详解
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9305956.html
Copyright © 2011-2022 走看看