LeetCode-Palindrome Number
2017-07-03 本文已影响0人
Hqmm
描述
- 判断整数是否为回文数,不使用额外的空间(O(1));
版本一
- 直观想法就是从低到高取该数的每一位,然后反向乘上10累加起来
- 代码(AC):
bool isPalindrome(int x) { if(x < 0) return false; int sum = 0, tmp = x; while(x > sum) { sum = sum * 10 + x % 10; x = x / 10; } return x == tmp; }
- 这思路就是反向把该数遍历一遍,解法比较朴实。
版本二
```
bool isPalindrome(int x)
{
if(x < 0 || (x != 0 && x % 10 == 0))
return false;
int sum = 0;
while(x > sum){
sum = sum * 10 + x % 10;
x = x / 10;
}
return (x == sum) || ( x== sum / 10);
}
```
- 思路:该方法优化的地方在于,它只需要把该整数遍历一般就够了,
(x == sum) || ( x== sum / 10)
即判断该整数偶数位或奇数位的情况; - 由于对于类似于10、100...这类数字不适合于该解法,因此在开始直接把这种非回文数给over了