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
- 不转化成字符串判断,主要是int型溢出的问题。res定义成long long类型
- 模拟过程:
·输入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
- x=0时退出循环