Featured image of post Palindrome Number

Palindrome Number

9. 回文数

分析

  1. 负数一定不是回文数:
    • 例如 -121 变成 121-,不对称,因此直接返回 false
  2. 将数字翻转后与原数比较:
    • 反转 x 的每一位数字,存入 b,然后判断 b == x 是否成立

时间复杂度

时间复杂度与 x 的位数成正比,最多 10 次(int 最大 32 位)

空间复杂度

空间复杂度为 O(1)

C++代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
class Solution
{
public:
    bool isPalindrome(int x)
    {
      if (x < 0)  // 负数一定不是回文数
        return false;

      long a = x, b = 0;  // a 复制 x,b 存储翻转后的数
      while (a)
      {
        b = b * 10 + a % 10;  // 取出 a 的最后一位,加到 b 的末尾
        a /= 10;  // 去掉 a 的最后一位
      }

      return b == x;  // 判断反转后的 b 是否等于原数 x
    }
};
Built with Hugo
Theme Stack designed by Jimmy