题意分析:
- 在不使用额外的内存空间的条件下判断一个整数是否是回文数字
- 如果使用NC57反转数字 的思路,注意溢出的处理
- 考虑负数的特判
解法一:数学
- 一个直观的算法,就是将所给数字反转之后与原来的数字进行比较,如果相等怎么时回文数(当然要考虑负数的情况)
- 关于如何反转一个数字串,请参考NC57反转数字
C++参考代码:
class Solution {
public:
int reverse(int x){
//用long的原因是避免溢出
long res = 0;
//注意细节:这里的终止条件不能是x>0
while(x!=0){
//将得到的每一位数字拼成完整的数值
res = res*10+x%10;
//获取下一位
x/=10;
}
//对数值范围可能溢出的考虑,利用了自带的INT_MAX与INT_MIN简化判断
if(res>INT_MAX || res<INT_MIN){
return 0;
}else{
return res;
}
}
public:
/**
*
* @param x int整型
* @return bool布尔型
*/
bool isPalindrome(int x) {
//特判:排除负数情况

京公网安备 11010502036488号