回文数-Java

2020-07-16  本文已影响0人  Catlet

题目

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

示例 1:

输入: 121

输出: true

示例2:

输入: -121

输出: false

解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例3:

输入: 10

输出: false

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

进阶:

可否不将整数转为字符串来解决这个问题?


解决思路

1、思考什么数字一定不为回文数?

不难想到,当数字为负数的时候,一定不是回文数。

所以,当x<0时,返回false。

2、如何将数字倒序输出?

核心思想:使用模运算求%10的余数,从而取出该数字的最后一位,将求出的最后一位数字乘以10进一位,并加上下一次的取余数,然后该数字依次整除实现递归运算。

例如:数字123

123%10的余数是3,3*10=30;

然后123/10=12,此时再对12取余,为2;

30+2=32,然后 32*10 =320;

再对12/10=1,最后320+1=321。实现数字倒序输出。

3、对比正序和倒序数字是否相同

例如:对比123与321,发现两数字不相同,得出结论为false,该数字不是回文数。

Java代码实现

class Solution {    

    public boolean isPalindrome(int x) {        

        if (x < 0{            

            return false;        

        }        

        int temp = x;        

        int reverse = 0;        

        while(temp != 0{            

            reverse = reverse*10 + temp%10;            

            temp = temp/10;        

        }        

        return reverse == x;    

    }

}

运行结果

通过测试

Tips

Java中运算符不要搞混:

% 代表模运算,取余。例如:16%3=1

/   代表除法运算,向下取整。例如:16/3=5

上一篇 下一篇

猜你喜欢

热点阅读