LeetCode09-回文数

这道题难度为Easy

题目如下:

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:

输入:121    输出:true

示例 2:

输入: 10     输出: false     解释: 从右向左读, 为 01 。因此它不是一个回文数。 



这道题的想法是:

        利用取余和整除操作,获得输入的第一位和最后一位,再进行比较,如果发现不符合即可退出循环并返回False,当且仅当全部相等的时候才返回True。

        首先第一步要获取除数,因为我们需要输入/div = 第一位,所以首先要获取到div的值。通过while( 输入 / div >= 10)   div = div * 10可得。

        第二步就可以在循环体内进行比较了。这里我拿1221作为例子,首先获取到第一位为1,最后一位为1,相同,则进入下一次比较;进入之前要对输入进行修改,删除第一位和最后一位,即下一次循环得输入为22。这里的删除操作为 1221 % div 得到221,然后再用221 % 10 得到22即可。

代码如下:

class Solution {

    public boolean isPalindrome(int x) {

        if(x < 0) return false;             //边界处理  

        int left, right;    

        int div = 1;        

        while( x / div >= 10)   div = div * 10;         //获得除数

        while(x > 0){       //在这个循环内,每一位进行比较,只要有一位不符合则返回false

            left = x / div;                             //通过除以div获取x的第一位数

            right = x % 10;                             //通过用10取余获取x的最后一位数

            if(left != right)   return false;           

            x = (x % div) / 10;             //比较完以后,把x的第一位和最后一位去掉 

            div /= 100;             //因为上式去掉了两位数,所以这里应该除以100,而不是10

        }

         return true;        

    }

}

需要注意的是div在每一次循环得更新为缩小100倍,而不是10倍,因为每一次循环内就去除了两个数字。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容