Leetcode 09 回文数

37 阅读1分钟

09 回文数

目录

题目

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false

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

  • 例如,121 是回文,而 123 不是。

分析

这个题目非常简单,与之前的整数反转一样,不过区别在于可以使用64位整数存储,因此可以保证的反转的安全性,整体的逻辑与整数翻转一致;流程分析:

  1. 如果是负数,直接返回false;因为-121反转过来时121-,必然是不相等的;
  2. 定义变量res,是用来将已经翻转的数进行组合的,temp是用来计算小数位置的,x_copy是为了避免在x的位置上进行改动;
  3. 执行while循环;
    1. 计算余数
    2. 更新目前得到值
    3. 去掉x_copy已经计算过的余数的部分
  4. 返回反转后的结果是否等于初始数;
class Solution {
    public boolean isPalindrome(int x) {
        if(x<0)   //如果是负数直接返回结果
            return false;
        long res = 0;
        int temp = 0;
        int x_copy = x;
        while(x_copy!=0){
            temp = x_copy % 10;
            res = res * 10 + temp;
            x_copy = x_copy/10;
        }
        return res == x;
    }
}