Strobogrammatic Number

A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside down).

Write a function to determine if a number is strobogrammatic. The number is represented as a string.

For example, the numbers "69", "88", and "818" are all strobogrammatic.

翻转后对称的数就那么几个,我们可以根据这个建立一个映射关系:8->8, 0->0, 1->1, 6->9, 9->6,然后从两边向中间检查对应位置的两个字母是否有映射关系就行了。比如619,先判断6和9是有映射的,然后1和自己又是映射,所以是对称数。

  • while循环的条件是left<=right

class Solution(object):
    def isStrobogrammatic(self, num):
        """
        :type num: str
        :rtype: bool
        """
        left = 0
        right = len(num)-1
        dic = {'9':'6', '6':'9', '1':'1', '8':'8', '0':'0'}
        while left <= right:
            # 如果字母不存在映射或映射不对,则返回假
            if num[left] not in dic or num[right] not in dic or dic[num[right]] != num[left]:
                return False
            left += 1
            right -= 1
        return True

Last updated

Was this helpful?