leetcode_246 中心对称数

426 阅读1分钟

要求

中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看)。

请写一个函数来判断该数字是否是中心对称数,其输入将会以一个字符串的形式来表达数字。

示例 1:

输入: num = "69"
输出: true

示例 2:

输入: num = "88"
输出: true

示例 3:

输入: num = "962"
输出: false

示例 4:

输入:num = "1"
输出:true

核心代码

class Solution:
    def isStrobogrammatic(self, num: str) -> bool:
        if not num:
            return True
        mapping = {0:0,1:1,6:9,8:8,9:6}
        invalid = [2,3,4,5,7]
        N = int(num)
        n = N
        tmp = 0
        res = list()
        while(n):
            n,tmp = divmod(n,10)
            if tmp in invalid:
                return False
            res.append(mapping[tmp])
        res = res[::-1]
        r = 0
        for i,x in enumerate(res):
            r += 10 ** i * x
        return r == N

image.png

解题思路:循环对10进行取商和取余,是我们mapping字典中就进行替换,最后进行翻转,看和原始的数字是不是相同的,即可。