给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
121
是回文,而 123
不是。输入:x = 121
输出:true
输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
输入:x = 10 输出:false 解释:从右向左读, 为 01 。因此它不是一个回文数。
👉️ 力扣原文https://leetcode.cn/problems/palindrome-number/
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
是一个回文数。这是一个有效的方法来判断一个整数是否是回文数,因为它不需要将整数转换为字符串进行比较。