题目描述:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例:
输入: 121
输出: true
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
思路:
取出后半段数字进行翻转,和前半段比较,对于偶数位的数,如果一样则是回文数,对于奇数位的数,则要将翻转过来的数字的最后以为去掉(除以 10 并取整)。
具体做法如下:
- 每次进行取余操作 ( %10),取出最低的数字:y = x % 10
- 将最低的数字加到取出数的末尾:revertNum = revertNum * 10 + y
- 每取一个最低位数字,x 都要自除以 10
- 判断 x 是不是小于 revertNum ,当它小于的时候,说明数字已经对半或者过半了
代码:
class Solution {
public boolean isPalindrome(int x) {
if (x < 0 || ((x % 10 == 0) && x != 0)) {
return false;
}
int reverseNum = 0;
while (x > reverseNum) {
reverseNum = reverseNum * 10 + x % 10;
x /= 10;
}
return x == reverseNum || (x == (reverseNum / 10));
}
}