刷leetcode-day2

一、题目:

9.回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例1:

示例2:

示例3:

二、思路:

将int整数用字符串库函数to_string转化为string类型,再使用一个for循环从头到尾依次比较:第一个和倒数第一个,第二个和倒数第二个。。。

三、代码:C++

class Solution {
public:
    bool isPalindrome(int x) {
        string s=to_string(x);
        int k=0;
        for(int i=0;i<s.size()-1;++i)
            {
               if(s[i]==s[s.size()-1-i])
                   k++;
            }
        if(k==s.size()-1)
            return true;
        else 
            return false;
    }
};

四、扩展:

看了leetcode上的答案:将int转化为string,会占用额外的空间;可以考虑直接将int类型的整数直接反转,但是直接反转整数可能会导致溢出,因此考虑只反转后半部分

代码:

class Solution {
public:
    bool isPalindrome(int x) {
        if(x<0||(x%10==0&&x!=0))
            return false;                  //排除特殊情况
        int s=0;
        int a=0;
        while(x>s)                         //x不>s时,已经转换了一半的整数了
        {
            a=x%10;
            x/=10;
            s=s*10+a;                     
        }
        if(x==s||x==s/10)               //x为奇数个时把中间数去除
            return true;
        else
            return false;
    }
};

全部评论

相关推荐

06-23 11:28
门头沟学院 Java
牛客91966197...:也有可能是点拒绝的时候自动弹的话术
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务