PalindromeNum问题

2019-05-08  本文已影响0人  MikeShine

这个问题要我们验证数字是否是回文数字。
如果没有要求的话,这个题目是非常简单的,直接来转成 String/Char,然后按位考察即可。
这里我们看一下,直接用数字操作如何做。

分析

其实还是一样。我们需要获取每一位,依次处理。这里可以每次处理最高位和最低位,然后处理剩下的,依次类推。

思路

问题的关键点是,如何获取最高位、最低位、更新数字。

int div=1;
while(x/div>10) div*=10;
x = (x%div)/10;

代码

package day_46;

// 题目中要求是,不转换成为 String 或者 Char


public class PalindromeNum {
    public boolean isPali(int x){
        if(x<0) return false;
        int div = 1;
        while (x/div >= 10) div*=10; // 先看最高位到多少
        while(x>0){
            int left = x/div; // 最左边一位
            int right = x%10; // 最右边一位
            if(left!=right) return false;
            x = (x%div)/10;
            div /= 100;  // 更新最高位
        }
        return true;
    }

    public static void main(String args[]){
        PalindromeNum p = new PalindromeNum();
        System.out.println(p.isPali(1221));
    }
}
上一篇 下一篇

猜你喜欢

热点阅读