Q:Determine whether an integer is a palindrome. Do this without extra space.
这道题也是基础题,判断一个数是否是回文数,条件是不能使用额外的空间,意思就是说,你不能把一个Intege转换成string,然后对string进行回文字符串的判断。
另外,如果用Reverse Integer的方法,可能会造成数值溢出,比如判断1423568769是否是回文数,反转之后就是9678654321,超出INT_MAX,溢出。
最后,回文数不包含负数。
我的思路是:(对非负数的处理)
不断X对10取余,直到X为0;迭代的过程中将结果乘10,并加上下一次的余数。最后得到的结果与原X比较,相等则为回文数,否则不是。
class Solution { public: bool isPalindrome(int x) { if (x < 0) return false; x = abs(x); int xxx = x; int xx = 0; while (x != 0){ xx = xx * 10 + x % 10; x = x / 10; } if (xxx == xx) return true; else return false; } };
原文地址:http://blog.csdn.net/kaitankedemao/article/details/43339443