9、回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
- 进阶:
你能不将整数转为字符串来解决这个问题吗?
题解
1、求一半,做比较
public boolean isPalindrome(int x) {
// 非法情况判定
if (x < 0 || (x % 10 == 0 && x != 0)) return false;
int revertedNumber = 0;
// 循环求,x的后n/2+1位的数,n为x的总位数
while (x > revertedNumber) {
// 更新后n/2+1位
revertedNumber = revertedNumber * 10 + x % 10;
// 更新x
x /= 10;
}
// n偶直接比较,n为奇数前n/2+1位先除以10,再比较
return x == revertedNumber || x == revertedNumber / 10;
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1056615746@qq.com