246.Strobogrammatic Number
Tags: [string], [two_pointer], [map]
Com: {g}
Link: https://leetcode.com/problems/strobogrammatic-number/\#/description
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.
Solution: Two Pointer, Map
class Solution(object):
    def isStrobogrammatic(self, num):
        """
        :type num: str
        :rtype: bool
        """
        if not num:
            return True
        size = len(num)
        if size % 2 != 0:
            mid = num[size / 2]
            if not (mid == '0' or mid == '1' or mid == '8'):
                return False
        char_map = {
            '0': '0',
            '1': '1',
            '6': '9',
            '8': '8',
            '9': '6'
        }
        left = 0
        right = size - 1
        while left < right:
            if num[left] not in char_map or\
               num[right] not in char_map or\
               char_map[num[left]] != num[right]:
                   return False
            left += 1
            right -= 1
        return True
Revelation:
- If the number of chars is odd, we should check the mid char.
 
Note:
- Time complexity = O(n), n is the length of the given string.
 - Space complexity = O(1).