😋|LeetCode009|回文数
Table of Contents
难度:Easy😋
题目 #
给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
思路 #
- 显而易见,可以直接利用反转数字的方式判断回文。其方法可以见leetcode007。其中,x的部分就是高几位,sum就是低几位。因为sum是从0开始加的。
- 需要注意特殊情况
- 如果是奇数位数的输入x,那么分开的两部分的位数不同。此时要把sum/10。
- 很显然,如果x是负数,必然返回false。
- 根据数字反转算法,如果输入的x满足x%10是0,那么会出现如下情况:
- x sum
- 300 0
- 30 0
- 3 0
- 0 0
- 于是,就算最后sum==x了,也不能输出true!
代码实现 #
class Solution {
public:
bool isPalindrome(int x) {
if(x>=0&&x<10)return true;
if(x<0||x%10==0)return false;
int sum=0;
while(sum<x){
sum=sum*10+x%10;
x=x/10;
}
// cout<<x<<' '<<sum<<endl;
if(sum==x||sum/10==x)return true;
return false;
}
};