题目
给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数
是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
示例 1:
输入:x = 121 输出:true
示例 2:
输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10 输出:false 解释:从右向左读, 为 01 。因此它不是一个回文数。
解题思路
方法一
- 首先判断给定的整数是否为负数,如果是负数,则肯定不是回文数,直接返回false;如果该整数以0结尾但不是0本身,也不可能是回文数,同样返回false。
- 初始化两个变量,
reversedNumber
用于存储反转后的数字,originalNumber
用于存储原始数字以便稍后比较。 - 迭代过程中,将给定整数逐位取出并将其反转,直到整数变为0为止。通过不断取模和整除操作,可以取得整数的最后一位数字,并将其追加到
reversedNumber
中。 - 在迭代完毕后,将获得的反转数字与原始数字进行比较,如果它们相等,则返回true,表示给定整数是回文数;否则返回false,表示给定整数不是回文数。
class Solution {
// 检查给定整数是否为回文数的函数
public boolean isPalindrome(int x) {
// 检查数字是否为负数或以0结尾但不为0本身
if (x < 0 || (x % 10 == 0 && x != 0)) {
return false; // 如果满足条件,则不是回文数
}
int reversedNumber = 0; // 初始化变量用于存储反转后的数字
int originalNumber = x; // 存储原始数字以便稍后比较
// 反转数字
while (x != 0) {
int lastDigit = x % 10; // 获取数字的最后一位
x = x / 10; // 从数字中移除最后一位
reversedNumber = reversedNumber * 10 + lastDigit; // 将最后一位追加到反转后的数字上
}
// 检查反转后的数字是否等于原始数字
return reversedNumber == originalNumber; // 如果是回文数则返回true,否则返回false
}
}