您的位置:首页 > 其它

Leetcode_Palindrome Number

2015-02-08 16:23 169 查看
这个问题就是判断整数是否为回文。

思路1:利用一个字符串,将int转换为字符串,但这样会需要使用额外的内存

思路2:经整数翻转,然后与原来的整数比较是否相等,但这样可能翻转后的整数会溢出

思路3:不断取整数的最高位和最低位(10进制下)进行比较,相等则取次高位和次低位进行比较

class Solution {
public:
bool isPalindrome(int x) {
if(x==0)
return true;
if(x<0)
return false;
int len=0;
int copyX=x;
while(copyX!=0)
{
++len;
copyX=copyX/10;
}
copyX=x;
for(int i=0;i<=len/2;++i)
{
if(copyX%10!=((int)(x/pow(10,(float)len-1-i))%10))
return false;
copyX=copyX/10;
}
return true;

}
};

为了规避上面程序中所用到的pow,也可以换成另外一种方式:(此源码来源于网上)
class Solution {
public:
bool isPalindrome(int x) {
if(x<0) return false;
int d=1;
while(x/d>=10) d*=10;//d为与x位数相同的整数,即10,100,1000等
while(x>0)
{
int q=x/d;
int r=x%10;
if(q!=r) return false;
x=x%d/10;//每次比较完之后,x就去点最高位和最低位
d/=100;
}
return true;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息