LeetCode-9. 回文数

难度:简单

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/palindrome-number/

1. 问题描述

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false

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

2. 分析与解答

回文的定义是按照中心轴翻转后是一致的,前有回文串的判定,那么可以将整数直接转成string,通过回文的判断翻转前后两者是一致的。

class Solution {
public:
    bool isPalindrome(int x) {
        // 转成string
        string s = to_string(x);
        string s1 = s;
        reverse(s1.begin(), s1.end());
        return s==s1;
    }
};

若是不转换成字符串,那就需要将整数中的每一个数位上的数取出,放到翻转后对应的位置上,这里需要注意的是首先对负数判定,直接判定负数为不符合的。

class Solution {
public:
    bool isPalindrome(int x) {
        if (x < 0) return false;
        long y = 0;
        int x_tmp = x;
        while (x > 0) {
            y = y*10+(x%10);
            x /= 10;
        }
        return x_tmp == y;
    }
};

注意:这里的y可能会超出int的表示范围,导致提交错误。