码迷,mamicode.com
首页 > 其他好文 > 详细

Palindrome Number

时间:2015-08-09 20:47:26      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

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.csdn.net/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是

版权声明:本文为博主原创文章,未经博主允许不得转载。

Palindrome Number

标签:

原文地址:http://blog.csdn.net/sinat_24520925/article/details/47378761

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!