[LeetCode]Palindrome Number

这里写图片描述
判断一个整数是不是回文数
利用字符串的操作,将int通过stringstream转成
string来通用处理

class Solution {
public:
    bool isPalindrome(int x) {
        stringstream ss;
        ss<<x;
        string s;
        ss>>s;
        int i,j;
        if(s.size()==1) return true;
        i = s.size()/2-1;
        if(s.size()&0x1)    //odd
            j = i+2;
        else
            j = i+1;
        while(i>=0&&j<s.size()&&s[i]==s[j])
            --i,++j;
        ++i,--j;
        if(j-i+1==s.size())
            return true;
        else
            return false;      
    }
};

如果不能使用额外空间

使用反转整数的方法

bool isPalindrome(int x) {
    int y=0;
    if(x<0) return false;
    int x_old = x;
    while(x){
        y = 10 * y + x%10;
        x = x/10;
    }
    return x_old==y;

}

一个awesome的方法,只用比较一半数字

/*Determine whether an integer is a palindrome. Do this without extra space.*/
bool isPalindrome(int x) {
    if(x<0|| (x!=0 &&x%10==0)) return false;
    int sum=0;
    while(x>sum)
    {
        sum = sum*10+x%10;
        x = x/10;
    }
    return (x==sum)||(x==sum/10);

}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/whzyb1991/article/details/46808597
个人分类: LeetCode
上一篇[LeetCode]String to Integer (atoi)
下一篇[LeetCode]Regular Expression Matching(Unsolved)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭