7.整数反转
我的解法
作为字符串处理,把x转化为list,然后对数字部分进行反转,将反转后的字符串与整数边界的数字部分比较(正数与2147483647,负数与2147483648),然后根据比较结果输出答案。
官方解法
方法一利用类似栈的方法实现数字反转,在“入栈”前判断一下入栈后数字是否在范围内即可。
评论区也有利用字符串翻转的方法,更加简单,直接利用异常捕获,如果转为int的过程中发现异常(即溢出),就返回0。不过Python的int()在溢出时不会抛出异常,因此这个方法可能在Python里不合适?
另外评论区有大佬提出,最后一位是无需比较的,因为如果的10位数必定在范围内,所以第一位只可能是0或1,反转后的最后一位也是同样的情况,因此无论是正数还是负数只需要比较前9位的数字即可。很好的优化思路,把需要分类讨论的问题转化为一种情况!
知识点
栈