难度简单
给你一个整数 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
bool isPalindrome(int x){
if(x<0)
return false;
else if(x>=0 && x<10)
return true;
else{
int a=0;int b=x;int max=0x7fffffff;
while(x){
if(a>max/10) return false;//1.避免溢出
a=a*10+x%10;
x/=10;
}
return a==b;
}
}
bool isPalindrome(int x){
int newnum=0;
if(x<0||x%10==0&&x!=0)//2.&& (逻辑与) 优先级高于||(逻辑或)
return false;
while(x>newnum)//不完全倒
{
newnum=newnum*10+x%10;
x/=10;
}
return x==newnum||x==newnum/10;
}
避免溢出
- 设置0x7fffffff
- 不使其完全累加