题意分析:
- 在不使用额外的内存空间的条件下判断一个整数是否是回文数字
- 如果使用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) { //特判:排除负数情况