LeetCode7-反转整数

昨天晚上突然梦到自己身边的朋友身患艾滋病,亲身经历了他每天被病魔折磨的过程,很揪心,早上也是被这个梦惊醒,直到现在还有些压抑。人生无常,但生命可贵,趁着还有力气,多去感受生活吧!每一个热爱生命热爱生活的人儿都值得被眷顾!


这一题也是很简单了,数据类型为整数,那就是省事很多了。我们只需每次用除法和求余分别得到个位,十位,百位...的数,存入一List列表中,注意的地方有两点,一是要注意加减符号,二就是要注意数值大小范围,题目所给的范围是[−2^31, 2^31 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。思路很简单,一看便知,所以这儿我也就不把官网所给的解题思路贴出来了,直接看代码。

代码如下:

class Solution:
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        num_reverse = 0
        num_list = []
        x_abs = abs(x)
        x_flag = 0
        if -2 ** 31 <= x <= 2**31 - 1:
            if x < 0:
                x_flag = 1
            flag = x_abs
            while flag > 0:
                flag = int(x_abs / 10)
                x_list = x_abs % 10
                num_list.append(x_list)
                x_abs = int(x_abs / 10)
            for num in range(len(num_list)):
                num_reverse += num_list[num] * 10 ** (len(num_list) - num - 1)
        else:
            num_reverse = 0
        if -2 ** 31 <= num_reverse * (-1) ** x_flag <= 2 ** 31 - 1:
            return num_reverse * (-1) ** x_flag
        else:
            return 0

效率嘛,很一般般。本人较懒,而且水平有限,能解出来就比较满足了,鄙视眼

猜你喜欢

转载自blog.csdn.net/weixin_36431280/article/details/83684652