题目
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
要求:不将整数转为字符串来解决这个问题
- 考虑将数字翻转,然后比较是否一致。存在问题:可能翻转后会溢出
- 考虑将数字一分为2,翻转后半个数字,然后和前半个比较是否一致。
- 怎样判断已经是一半数字?当前数是x,那么会一直x%10,x/10;当当前数已经小于等于后面的翻转数时,代表已经一半了。
- 首先要判断一些特殊情况:
1)所有个位是 0 的数字不可能是回文,因为最高位不等于 0
2)负数
class Solution {
public:
bool isPalindrome(int x) {
if(x<0 || x!=0&&x%10==0){
return false;
}
int reverseNum=0;
while(x>reverseNum){
reverseNum=reverseNum*10+x%10;
x/=10;
}
return x==reverseNum||x==reverseNum/10;
}
};

本文介绍了一种不使用字符串转换的回文数判断算法。通过将整数翻转并与原数对比,考虑到特殊情况下(如个位为0的数、负数)的处理,提供了一种高效且避免溢出的方法。
524

被折叠的 条评论
为什么被折叠?



