題目描述:
給出乙個 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 請根據這個假設,如果反轉後整數...