Palindrome Number

本文介绍两种判断整数是否为回文数的方法,一种是使用数组存储整数的每位数字并进行比较,另一种是通过逆序整数进行判断。

Determine whether an integer is a palindrome. Do this without extra space.

题目解析:

判断一个整数是否是回文数,

“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这样的特征,成为回文数(palindrome number)。
设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数。
0是回文数,负数、小数不是回文数,

解题方法一:

我们用数组将整数的各个位存储起来,之后判断首位两个数不断向中间靠拢时,两个值是否相等就可判断这个数是否是回文,代码如下:

class Solution {
public:
    bool isPalindrome(int x) {
        
        bool result=true;
        if (x==0)
	{
		return result;
	}
	if (x<0)
	{
		return false;
	}
	int temp;
	vector<int >array;
	
	while(x/10!=0)
	{
		temp=x%10;
		x=x/10;
		array.push_back(temp);
	}
	if (x%10!=0)
	{
		array.push_back(x%10);
	}
	for (vector<int>::iterator iter=array.begin(),iter1=array.end()-1;iter!=array.end(),iter1!=array.begin();iter++,iter1--)
	{
		if (*iter!=*iter1)
		{
			result=false;
			break;
		}
	}
	return result;
        
    }
};
优点:方法直观通用
缺点:运算复杂,占用额外的空间

方法二:

求整数n的各个位逆序之后所组成的整数的值,如果两个值相等就是回文数,当然了,像10,100,220,最后位有0的直接判断不是回文。
其中求整数的reverse 值仿照http://blog.youkuaiyun.com/sinat_24520925/article/details/45558769 的方法二,具体算法如下:
代码如下:
class Solution {
public:
    bool isPalindrome(int x) {
        if(x<0||(x!=0&&x%10==0)) return false;
        int sum=0;
        int temp=x;
        while(temp)
        {
            sum=sum*10+temp%10;
            temp/=10;
        }
        return (x==sum);
        
    }
};




0是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值