镜像数字是指一个数字旋转180°以后和原来一样(倒过来),例如,数字"69""88",和"818"都是镜像数字,判断数字是不是镜像的,数字用字符串来表示。
给出数字num="69",返回True;给出数字num="68",返回False。
要判断一个数字是否是镜像数字,可以将其旋转180°后与原数字进行比较。
具体步骤如下:
- 创建一个字典,将对应的镜像关系存储起来(例如,0和0是镜像的,1和1是镜像的,6和9是镜像的,8和8是镜像的,9和6是镜像的);
- 初始化两个指针left和right,分别指向数字的最左边和最右边;
- 循环判断left指针所指的数字和right指针所指的数字是否是镜像关系,如果不是,则返回False;
- 每次循环结束,将left指针向右移动一位,将right指针向左移动一位;
- 如果left指针大于等于right指针,表示已经判断完所有的数字,返回True。
?
def is_mirror_number(num):
mirror_dict = {'0': '0', '1': '1', '6': '9', '8': '8', '9': '6'}
left, right = 0, len(num) - 1
while left <= right:
if num[left] not in mirror_dict or num[right] != mirror_dict[num[left]]:
return False
left += 1
right -= 1
return True
# 测试样例
num = input("请输入一个数字:")
result = is_mirror_number(num)
print(result)
这个算法通过比较左右指针所指的数字是否满足镜像关系来判断数字是否是镜像的,时间复杂度为O(n),其中n是数字的长度。