描述
- 判斷整數(shù)是否為回文數(shù),不使用額外的空間(O(1));
版本一
- 直觀想法就是從低到高取該數(shù)的每一位,然后反向乘上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; } - 這思路就是反向把該數(shù)遍歷一遍,解法比較樸實。
版本二
```
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);
}
```
- 思路:該方法優(yōu)化的地方在于,它只需要把該整數(shù)遍歷一般就夠了,
(x == sum) || ( x== sum / 10)即判斷該整數(shù)偶數(shù)位或奇數(shù)位的情況; - 由于對于類似于10、100...這類數(shù)字不適合于該解法,因此在開始直接把這種非回文數(shù)給over了