大廠面試題 力扣第7題整數反轉超詳細解析

2021-10-23 13:21:13 字數 1625 閱讀 7535

題目描述:

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

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

例如:1534236469 反轉後變成 9646324351超過範圍,直接返回0

解題思路:

我們可以把整數轉換成字串,遍歷字串可以拿到每乙個字元,把他們從後往前放進乙個新的陣列,再轉換成數字型別。

**實現:

1.將輸入的整數轉換成字串

function

reverse

( x )

2.定義乙個新陣列並把原字串從後往前新增進去

var arr1 =

//從後往前插入乙個新陣列,這樣這個陣列就是原字串的倒序陣列

for(

var i = arr.length ; i >=

0; i --

)

3.把陣列轉換成字串,如果輸入的整數為負數,拼接字串」-「,再轉換成數字型別

//因為輸入的整數可能是負數,在前面我們只關注了數字的倒序,現在我們要重新還原輸入整數的符號,把陣列轉換成字串有利於我們拼接

var new_x = arr1.

join(""

)//我們記錄了輸入的整數為flag,的判斷它的符號

if(flag <0)

//重新轉換成數字

var res =

parseint

(new_x)

4.判斷極值,如果超出直接返回0

//判斷取值區間

var max = math.

pow(2,

31)-1

var min = math.

pow(-2

,31)//如果超出,直接返回0

if(res <= min || res >= max)

最後返回結果就得到了整數的反轉

整體**如下:

var

reverse

=function

(x) new_x = arr1.

join(""

)if(flag <0)

var res =

parseint

(new_x)

var max = math.

pow(2,

31)-1

var min = math.

pow(-2

,31)if

(res <= min || res >= max)

return res

}var res =

reverse

(123

) console.

log(res)

// 321

var res1 =

reverse

(1534236469

) console.

log(res1)

// 超過極值,返回0

大廠面試題 力扣第9題超詳細解析

題目描述 判斷乙個數是否是回文數。回文數是指正序 從左到右 和倒序 從右到左 讀都是乙個數。例如121 正序和逆序都是121 解題思路 既然我們知道了什麼是回文數,知道了回文數正序和逆序的特徵,我們可以利用這點,封裝乙個函式,將要判斷的整數傳入,我們需要把傳入 整數變成陣列,再得到乙個新的陣列,這個...

整數反轉 leetcode力扣第7題

要注意的一點是整型溢位的判斷是在反轉後,所以只要用長整型儲存反轉結果,然後再判斷是否超出整型範圍就可以。本來這道簡單題也不至於做不出來,但是這個整型溢位的問題,我糾結了很久,以為是輸入就要判斷,所以記錄一下這個坑點。class solution int nums 33 int length 0 wh...

力扣7題 整數反轉

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