9. 回文数

题目描述:

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

示例 1:

输入: 121
输出: true
示例 2:

输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:

输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

 

我的方法(简单粗暴,效率较低):

class Solution {
public:
    bool isPalindrome(int x) {
        if(x<0) return false;  //<0的都是false
        else if(x==0) return true;  //不要忘记判断0
        else{
            string rev,x_str;
            x_str=to_string(x);   //注意使用to_string将int转换为string
            while(x){
                rev+=to_string(x%10);
                x/=10;
            }
            cout<<rev<<x_str;
            if(rev==x_str) return true;  //string类型的数据直接用==比较即可
            else return false;   
        }
    }
};

参考解法(使用stringstream):

class Solution {
public:
    bool isPalindrome(int x) {
     long rev;    
    if (x < 0) return false;//排除负数
        string str_x = to_string(x);//转换成字符串
     std::reverse(str_x.begin(), str_x.end());//进行反转
     stringstream out(str_x);
     out >> rev;//结果写入rev
    return x==rev;//比较得出结果
    }
};

 

posted @ 2020-01-31 18:25  thefatcat  阅读(107)  评论(0编辑  收藏  举报