leetcode9.回文数

Posted by serrini on March 7, 2023

Question-9

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

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

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

示例 1:

输入:x = 121 输出:true

示例 2:

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

示例 3:

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

提示:

-2³¹ <= x <= 2³¹ - 1

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

Related Topics 数学 👍 2440 👎 0

Answer-9

/*
 * 9
 * x = -121, false
 */
bool isPalindrome(int x) {
    if (x < 0) return false;
    int x_ = x; //备份x
    long long res = 0; //定义int会溢出
    while(x != 0) {
        int n = x % 10;
        res = res * 10 + n;
        x /= 10;
    }
    cout << res << endl;
    if (res == x_) {
        return true;
    } else {
        return false;
    }
}

Attention

  1. 不转化成字符串判断,主要是int型溢出的问题。res定义成long long类型
  2. 模拟过程:·输入123,n=3,res=0*10+3=3,x=12;n=2,res=3*10+2=32,x=1;n=1,res=32*10+1=321,x=0
  3. x=0时退出循环