P009 Palindrome Number

Determine whether an integer is a palindrome. Do this without extra space.

思路分析

  • 负数==>false
  • 从两头对数字逐渐切割,一旦有不同的==>false

代码

java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Solution009 {
public boolean isPalindrome(int x) {
if (x < 0)
return false;
else if (x <= 9)
return true;
int base = 1;
// 取得最高位的级数base=power(10,n)
while (x / base >= 10)
base *= 10;
while (x != 0) {
int left = x / base;
int right = x % 10;
if (left != right)
return false;
x -= base * left;// 去掉最高位
x /= 10;// 去掉最低位
base /= 100;// 去掉了两位数,base/100
}
return true;
}
}

python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Solution009(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
if x < 0:return False
elif x <= 9 :return True
base = 1
while x / base >= 10:
base *= 10
while x != 0:
l = x / base
r = x % 10
if l != r:return False
x -= l * base
x /= 10
base /= 100
return True