题目描述:
Determine whether an integer is a palindrome. Do this without extra space.
我的解题思路:
题目要求的是判断一个整数是不是回文整数,拿到题目之后就想起了之前做过的寻找最长回文子串的问题。但是整数不同于字符串,字符串的每一位读取非常方便,而整数则不同,这是由它们的存储方式不同所决定的。所以,不能采用回文子串的方案。
那么,针对这个问题,最简单的想法就是求解该整数的反转整数,判断其与原始整数是否相等即可。之前也做过反转整数的问题,当时还要考虑溢出的情况。但是针对本题,无需考虑溢出的情况,因为有溢出的肯定不是回文整数了,放任其溢出,这样溢出之后的反转整数为负,肯定跟原始整数不相等,也就不会影响判断。提交通过的程序如下:
class Solution {
public:
bool isPalindrome(int x) {
int res=0;
int tmp=x;
int flag=1;
if(x<0)
{ return 0;
}
while(tmp!=0)
{
res=res*10+tmp%10;
tmp=tmp/10;
}
if(res==x)
return 1;
else
return 0;
}
};
对于一个整数,采用mod,%这两种运算符,可以每次得到整数的一位,
while(tmp!=0)
{
res=res*10+tmp%10;
tmp=tmp/10;
}
这种数学技巧适用于整数相关的数学问题。