9. 回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
示例
输入:x = 121
输出:true
思路
- 求出 x 的位数
serval = log10(x) + 1
- 遍历 x 的前 serval / 2 位,从右到左输出一个数 num,x不断除10
- 如果 serval 为奇数,x 再 除 10
return x == num
代码
class Solution {
public:
bool isPalindrome(int x) {
if(x < 0) return false;
if(x == 0) return true;
int several = log10(x) + 1;
int num = 0;
for (int i = 0; i < several / 2; i++)
{
num = num * 10 + x % 10;
x = x / 10;
}
if (several % 2 == 1)
{
x = x / 10;
}
return x == num;
}
};
结论
- log10(x)
x 必须大于等于 0
时间复杂度控件复杂度
- 时间复杂度:
O(n/2)
- 空间复杂度:
O(1)