LeetCode9

Stella981
• 阅读 554

LeetCode9

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

LeetCode9

难的地方是这个要求。

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

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

计算一下循环 

int x = 12345;

        int count = 0;

        while(x>0){
            x/=10;
            count++;
        }

        System.out.println(count);

LeetCode9

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

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

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

LeetCode9

 还是用除以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;


    }

LeetCode9

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

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

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
vue element table 表头添加图标
!(https://oscimg.oschina.net/oscnet/189d567e07e0844612470867b06a35c0aaf.jpg)!(https://oscimg.oschina.net/oscnet/dc3b454d663d8618924b78796345a145b3f.jpg)1<template
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Jira & Confluence 在敏捷转型中的重要性
!(https://oscimg.oschina.net/oscnet/543410bd0b319367933d992f9d80d35cd54.jpg)Atlassian产品的设计理念!(https://oscimg.oschina.net/oscnet/fac3d33081927df5f8a26204c98
Stella981 Stella981
3年前
KaliTools说明书+BurpSuit实战指南+SQL注入知识库+国外渗透报告
!(https://oscimg.oschina.net/oscnet/d1c876a571bb41a7942dd9752f68632e.gif"15254461546.gif")0X00KaliLinux Tools中文说明书!(https://oscimg.oschina.net/oscnet/
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Stella981 Stella981
3年前
Jenkins流水线即代码之扩展共享库
!(https://oscimg.oschina.net/oscnet/ab8ee75c43cb1a3fd0fac241648861b03c5.gif)!(https://oscimg.oschina.net/oscnet/1a35fdf03222f188f706711d2b43eae6a14.gif)!(https://osci
Wesley13 Wesley13
3年前
mysql系列(三)——mysql架构与存储引擎
一、MySql逻辑架构!(https://oscimg.oschina.net/oscnet/up35e1824330cd1df7ac66652b9b1dbc41965.png)1.连接层!(https://oscimg.oschina.net/oscnet/up272cb2634e262cc2df52220a063
Stella981 Stella981
3年前
Python_爬虫_案例汇总:
1.豆瓣采集!(https://oscimg.oschina.net/oscnet/29e918bf2ebced4da903f8ab789cd37ca35.jpg)!(https://oscimg.oschina.net/oscnet/83a646b5655e70dc379744e8ebfe145238d.jpg)1codin
Stella981 Stella981
3年前
Nginx快速安装
登录nginx官网,点击download!(https://oscimg.oschina.net/oscnet/cbbf95a1f35af2c4d24f0508229bf20e513.png)点击稳定版本!(https://oscimg.oschina.net/oscnet/9b1a9eb422fec4d9c4be2218261418bc
Stella981 Stella981
3年前
Eclipse 中的Maven常见报错及解决方法
1.不小心将项目中的MavenDependencies删除报错!(https://oscimg.oschina.net/oscnet/fd35e500e2580bca2afb81f35233b87a6ee.png)项目报错:!(https://oscimg.oschina.net/oscnet/8623bd4293fea39ca83a6