Python→整數反轉


題目:給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。

示例 1:

輸入: 123
輸出: 321
 示例 2:

輸入: -123
輸出: -321
示例 3:

輸入: 120
輸出: 21
注意:

假設我們的環境只能存儲得下 32 位的有符號整數,則其數值范圍為 [−231,  231 − 1]。請根據這個假設,如果反轉后整數溢出那么就返回 0。

審題的關鍵點有幾個,一個是這個給的數值正整數和負整數都有可能,范圍是 [−2**31,  2**31 − 1],主要是這三個點,這里我想到的解決方案是轉化成字符串,再轉換成int型。

偽代碼:

  1. 把傳入的值直接轉成字符串
  2. 把拿到的字符串判斷是正整數,還是負整數
  3. 負整數取值,直接從第二位開始取值,然后反轉
  4. 最后返回時,根據前面轉換后的值,判斷在不在 [−2**31,  2**31 − 1]
import math
def reverse(x: int):
    str_x = str(x)
    if str_x[0] == '-':
        x = int("-" + (str_x[1::])[::-1])
    else:
        x = int(str_x[::-1])

    return x if math.pow(-2, 31) < x < math.pow(2, 31) - 1 else 0


if __name__ == "__main__":
    print(reverse(-9))

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM