>[success] # 反转整数 ~~~ 给定一个 32 位有符号整数,将整数中的数字进行反转。 注意: 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1]。根据这个假设,如果反转后的整数溢出, 则返回 0。 ~~~ * 示例 ~~~ 输入: 123 输出: 321 ~~~ >[danger] ##### 解题PYTHON * 思路 ~~~ 1.利用切片[start_index:end_index:step] 2.切片第一个值 是从哪里开始,第二个是在哪里结束,第三个是跳跃几个,顾头不顾腚 ~~~ * 个人最开始想法 ~~~ class Solution: def reverse(self, x): """ :type x: int :rtype: int """ if x<0: a = int("-"+str(x)[:0:-1]) print(a) if a < (-2**31): return 0 else: return a elif x>=0: a = int(str(x)[::-1]) if a > (2**31-1) : return 0 else: return a ~~~ * 查询后别人的方法 ~~~ class Solution: def reverse(self, x): """ :type x: int :rtype: int """ x = int( str(x)[::-1] if x>=0 else "-"+str(x)[:0:-1]) return 0 if x>2**31-1 or x<-2**31 else x ~~~ * 最快方法 ~~~ 1.bit_length() 一个数的二进制长度 2.一个数的二进制长度等于长度二的次幂加1 ~~~ ~~~ class Solution: def reverse(self, x): """ :type x: int :rtype: int """ flag = 0 if x > 0: flag = 1 else: flag = -1 s = str(abs(x))[::-1] n = int(s) * flag return n if n.bit_length() < 32 else 0 ~~~ >[danger] ##### 解题JAVASPRICT ~~~ 1.Math.sign() -- Math.sign方法用来判断一个数到底是正数、负数、还是零 2.字符串.abs(x).toString().split("").reverse().join("") ~~~ ~~~ /** * @param {number} x * @return {number} */ var reverse = function(x) { let numberList = Math.sign(x)*Math.abs(x).toString().split("").reverse().join("") return (numberList<Math.pow(-2,31)||numberList>Math.pow(2,31)-1)?0:numberList }; ~~~