回文数是指正序(从左到右)和倒叙(从右到左)都是一样的整数。列如,1223是回文,而1222不是回文。
解法一:
通过逆转字符进行比较
首先考虑临界问题,提高判断效率。
如果x是一个负数小于零那他一定不是一个回文数
如果他是一个大于零的整数,末尾是零那他也不是回文
for x<0 or x>0 and x%10==0:
return False
只有符合以上临界判断,才进行逆转判断
逆转:
首先把我们的数字转化成字符串;str_x=str(x)
如果我们的当前字符逆转后等于逆转后的字符串那就是回文数
return str_x==str_x[::-1]
最后输出
print(is_palindrome())
解法二:
反转一半数字和前半部分的数字进行比较
首先考虑临界问题
for x<0 or x>0 and x%10==0:
return False
定义一个变量reverted去保存逆转后的后半部分数字默认为零
reverted = 0
然后用循环对整数x进行处理
x小于reverted的时候用while判断是否成立,成则结束反正继续
用2332来举例:第一次循环把末尾的数字2取出,第二次取3,需要把32变成23。
因此:
reverted==revertde*10+x%10
x//10=10
第一次reverted等于零,就是第一次循环结束后reverted等于2x变成122,第二次reverted2*10+3变成23,这时32这个数字变成23
返回的时候分两种情况,一数位是奇数,二数位是偶数
如果是偶数位反转和现在x是一样的
reverted x==reverted or x== reverted//10
最后输出: