1. 程式人生 > >LeetCode7-反轉整數

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

效率嘛,很一般般。本人較懶,而且水平有限,能解出來就比較滿足了,鄙視眼