Strobogrammatic Number I

题目描述

looks the same when rotated 180 degrees

解题方法

Solution

class Solution(object):
    s_map = {}
    s_map["6"] = "9"
    s_map["9"] = "6"
    s_map["8"] = "8"
    s_map["1"] = "1"
    s_map["0"] = "0"

    def isStrobogrammatic(self, num):
        """
        :type num: str
        :rtype: bool
        """
        length = len(num)
        start = 0 
        end = length - 1

        while start <= end:
            valid = self.isValid(num, start, end)
            if valid:
                start += 1
                end -= 1
            else:
                return False
        return True

    def isValid(self, num, i, j):
        if i == j:
            if num[i] not in ["1", "0", "8"]:
                return False
            else:
                return True
        else:
            if num[i] in self.s_map and self.s_map[num[i]] == num[j]:
                return True
            else:
                return False

Reference