又做了一道题。Palindrome chain length

这是一个关于回文的计算题。 回文是指将字符串从中间分开,左右两边反转后对称的字符串。 比如,“あいういあ"是回文,“あいうえお"不是回文。 数字同理,5、44、171、4884 是回文,43、194、4773 不是回文。

这道题要求对给定的数字,按照特定的计算方法,算出需要几次操作才能变成回文数。 这里的特定计算方法是"将数字各位反转后与原数字相加”。

比如,给定 87,经过 4 次计算变成回文数,所以返回值为 4。

1
2
3
4
87 + 78     = 165; 
165 + 561   = 726; 
726 + 627   = 1353; 
1353 + 3531 = 4884;

难点在于如何反转数字。 查了一下,发现其实很简单,一行就能搞定。Python 反转字符串

1
2
str(n)       # 把数字转成字符串
str(n)[::-1] # 把数字转成字符串后反转

这种写法就是"从字符串末尾往前依次取到开头”。

针对这道题,我的解答如下:

1
2
3
4
5
6
def palindrome_chain_length(n):
    cnt=0
    while str(n) != str(n)[::-1] :
        cnt += 1
        n   += int(str(n)[::-1])
    return cnt

真方便啊~ 这样今天又能睡个好觉了~