美文网首页
回文数-Java

回文数-Java

作者: Catlet | 来源:发表于2020-07-16 14:29 被阅读0次

    题目

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

    示例 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

    相关文章

      网友评论

          本文标题:回文数-Java

          本文链接:https://www.haomeiwen.com/subject/vsyphktx.html