给你一个整数 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
题解:本题一眼负数返回false,所以按照正数负数来区分两种情况,然后找出整数的长度,一个一个依次对比即可。
#include <iostream>
using namespace std;
class Solution{
public:
bool isPalindrome(int x){
int len = 0, n = x;
//求出整数的位数,即之后的数组长度
while (n!=0){
len++;
n/=10;
}
if(x>=0) {
int s[12]; //最大不会超过10的12次
n = x;
//拆分
for (int i = 0; i < len; i++) {
s[i] = n % 10;
n /= 10;
}
//比较是否为回文数
for (int i = 0, j = len - 1; i <= j; i++, j--) {
if (s[i] == s[j]) continue; //继续循环
else return false; //退出循环且返回
}
return true;
} else return false; //负数情况
}
};