题目:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
解决办法:
思路将回文数折半,然后将前半段的原数和后半段经过反转后相比较即可判断是否是回文数,既然要折半那么首先就得找到这个数的中点,然后利用用一个循环来反转。操作就是利用从最后一个数开始反转与原数除十相比,如果后半段大于除十后的数,则表示折半完成。
代码:
public static boolean isPalindrome(int x) {
int n = 0;
if(x%10==0&&x!=0) { //回文数不能为负数,不能为取余前后两项不同的数
return false;
}
/*
* 折半判断前半段和后半段是否相等
* 约束条件是将原数除十跟后半段翻转相比相比,如果后半段大于原数表示折半完成
* */
while(x>n) {
int pop = x%10;
n=n*10+pop;
x/=10;
}
if(x==n||x==n/10) {
return true;
}
return false;
}