题目
给你一个整数x
,如果 x
是一个回文整数,返回true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
示例
示例1
输入:x = 121
输出:true
示例2
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例3
输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。
提示
- -231 <= x <= 231 - 1
class Solution { public boolean isPalindrome(int x) { if(x < 0){ return false; } int n = 0; int m = x; while(m > 0){ n = n * 10 +m % 10; m/=10; } return n == x; } }
详细解读
回文数是指正着读和倒着读都相同的数字。我将逐步去解释这段代码的工作原理:
- 首先,代码开始通过
if(x < 0)
来判断输入的整数x
是否小于零。如果是负数,它不可能是回文数,因此直接返回false
。 - 如果输入的整数
x
大于等于零,那么代码继续执行。它创建两个整数变量n
和m
,并将它们都初始化为x
。这两个变量将用于进行比较。 - 进入
while
循环,条件是m > 0
,也就是说只要m
大于零,就一直进行下面的操作。 - 在循环中,
n
会不断地被扩展为其当前值乘以 10,然后加上m % 10
,也就是m
的最后一位数字。同时,m
会除以 10,以便下一次循环可以处理下一位数字。 - 循环会一直进行,直到
m
变为零,这时候n
包含了原始整数x
的反向版本,也就是x
的各个数字从右到左排列而成。 - 最后,代码检查
n
是否等于原始整数x
。如果相等,说明整数x
是一个回文数,返回true
;否则,返回false
。
这个算法的核心思想是将整数 x
反转并与原始整数 x
进行比较。如果它们相等,那么 x
是一个回文数。这是一个有效的方法来判断一个整数是否是回文数,因为它不需要将整数转换为字符串进行比较。