python 每日一练(11) 回文数

时间:2024-04-27 07:03:46

回文数是指正序(从左到右)和倒叙(从右到左)都是一样的整数。列如,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

最后输出: