整數反轉 LeetCode 07

2021-10-24 08:40:53 字數 1175 閱讀 7022

題目描述

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

注意:假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−2^31, 2 ^ 31 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。

示例:

示例 1:

輸入: 123

輸出: 321

示例 2:

輸入: -123

輸出: -321

示例 3:

輸入: 120

輸出: 21

這道題目要求我們將乙個有符號整數進行反轉,也就是說 64 這個數字再反轉後會變為 46 ,個位數反轉到十位數,十位數反轉到個位數。如果給出的整數是負數的話,整數的符號不能變。在這道題中我們要注意以下幾點:

翻轉數字問題需要注意的就是溢位問題,為什麼會存在溢位問題呢?

我們int 型的數值範圍是 -2147483648~2147483647 (-2^31 ~ 2^31 - 1), 那麼如果我們要翻轉1000000003 這個在數值範圍內的數,得到 3000000001,但翻轉後的數就超過了範圍,這個情況就是溢位,這個時候程式返回 0 即可。

如果輸入的是負數,就遞迴呼叫原函式,引數變成 -x 即可,**大致執行流程如下:

首先判斷x 是否為負數,如果是負數先取絕對值然後遞迴取反,最後再將結果轉換為負數即可;

res 為最後結果,最開始等於 0 。x % 10(例如:123 % 10 = 3) 取出最後一位數。每次得到最後一位數字,並將其作為結果中的當前最高位;

判斷結果res 是否溢位,如果溢位則返回 0 。

詳細**如下所示:

public

class

solution

if(x <0)

int res =0;

while

(x !=0)

res = res *

10+ x %10;

x /=10;

}return res <= integer.max_value ? res :0;

// 如果溢位就返回0

}}

Leetcode 07 整數反轉

文章目錄 題目 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這...

leetcode 07 整數反轉 python

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉...

leetcode07 整數翻轉

寫的很亂,可讀性差 1.沒有考慮完轉化之前與之後的溢位問題 採用long替換int 2.c c 中的取餘數的運算和一般的數 算不同,負數的取餘數會出 現餘數為負數 3.採用if else 顯得太麻煩 4.寫 前想好變數的命名 int reverse int m if y 0 x long x whi...