每日一道leetcode:9. 回文数

Posted zhiyong_will

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一道leetcode:9. 回文数相关的知识,希望对你有一定的参考价值。

1. 题目(简单)

题目链接

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

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

例如,121 是回文,而 123 不是。

示例 1:

输入:x = 121
输出:true

示例 2:

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

示例 3:

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

提示:

  • -231 <= x <= 231 - 1

进阶:你能不将整数转为字符串来解决这个问题吗?

9.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的表示范围,导致提交错误。

以上是关于每日一道leetcode:9. 回文数的主要内容,如果未能解决你的问题,请参考以下文章

每日算法LeetCode 9 —— 回文数(九十八)

leetcode每日一题(2020-06-10):9.回文数

LeetCode——9 Java之回文数

每日一道leetcode:5. 最长回文子串

JS leetcode 回文数 题解分析,数学不好是硬伤

每日算法/刷穿 LeetCode9. 回文数(简单)