Determine whether an integer is a palindrome. Do this without extra space.
判断是否是回文数
先不考虑使用额外空间的问题
最直观的就是转换成字符串首尾比对
1.字符串解法
def is_palindrome(num):
if num < 0:
return False
i = 0
num_list = list(str(num))
num_list_len = len(num_list)
while i < math.floor(num_list_len / 2):
print(num_list[i], num_list[num_list_len-1-i])
if num_list[i] != num_list[num_list_len-1-i]:
return False
i += 1
return True
2.另外一种数学上的解法
def is_palindrome_numerical(num):
num_temp = num
rev = 0
cnt = 1
while num != 0: # 既然是回文数,那么除0外,最后一位不应是0,这里需要加个判读即可
if cnt == 1 and num % 10 == 0:
return False
rev = rev * 10 + num % 10
num = math.floor(num / 10)
cnt += 1
print(rev)
if rev == num_temp:
return True
else:
return False