Palindrome Number

来源:互联网 发布:网络电影播放器排行榜 编辑:程序博客网 时间:2024/06/06 13:11

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是

0 0
原创粉丝点击