关闭

[LeetCode]Palindrome Number

195人阅读 评论(0) 收藏 举报
分类:

这里写图片描述
判断一个整数是不是回文数
利用字符串的操作,将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);

}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:55575次
    • 积分:2170
    • 等级:
    • 排名:第17438名
    • 原创:162篇
    • 转载:9篇
    • 译文:0篇
    • 评论:13条
    文章分类
    最新评论