原題鏈接在此 https://leetcode.cn/problems/reverse-integer/ 一個常見的算法問題是反轉正整數:將 12345 變成 54321。乍一看,這個問題似乎很簡單——將整數轉為字符串,然后轉為數組,反轉數組,然后將其轉為字符串,最后再次化為整數。雖然該解決方案可能會得到“54321”,但這并不是解決問題的最佳方法。 如果算法的輸入值是整數,并且預期輸出是整數,那么問題的最佳解決方案不涉及將整數轉換為另一種數據類型。相反,要解決簡單的“反轉整數”問題,您應該使用模和簡單的數學。 首先要做的是編寫一個函數,我將其稱為 現在,您想要對數字執行操作,直到輸入等于零。為此,創建一個 while 循環: 在 while 循環內,您要做的第一件事是獲取數字的模。模運算符 (%) 返回余數,因此如果執行類似 的操作 現在您已經有了模數,您需要修改原始數字,以便最終值不再包含在數字中。為此,您必須將數字除以 10,并對該操作執行 Math.floor() : 最后,您需要修改“結果”變量。您想要將“mod”添加到結果中,但每次執行 while 循環時,您都需要將現有結果乘以 10,以便它變得更長,而不是簡單地將數字的所有值相加:就是這樣!為了測試這個解決方案是否有效,讓我們使用真值表嘗試數字“123”: 由于 num 現在為 0,因此 while 循環不再執行,函數返回結果,即 321。 如果輸入可以是正數或負數,您可以通過在開始時檢查是否正確來輕松修改此函數,然后根據需要在末尾添加負號。 首先,實例化一個變量并將其設置為布爾值。如果輸入數字為正數,則無需更改變量。如果為負數,則將該變量設置為“false”,并將輸入的數字設置為其自身的絕對值: 然后,在最終的 return 語句中,您需要檢查 'pos' 變量是 true 還是 false。如果為 true,則只需返回結果即可。如果為 false,則說明輸入的值為負數,因此返回結果乘以 -1:reverseNum
,它接受一個數字。然后,初始化一個新變量,調用result
并將其設置為零。結果就是你最終將返回的結果:function?reverseNum(num)?{
????let?result?=?0
????//...
????return?result
}function?reverseNum(num)?{
????let?result?=?0
????while?(num?>?0)?{
????????//...
????}
????return?result
}13%10
,結果將為 3,因為 13/10 的余數為 3。在此算法中,您需要重復獲取輸入數字的最后一個值,這可以使用模來完成
function?reverseNum(num)?{
????let?result?=?0
????while?(num?>?0)?{
????????let?mod?=?num?%?10
????????//...
????}
????return?result
}function?reverseNum(num)?{
????let?result?=?0
????while?(num?>?0)?{
????????let?mod?=?num?%?10
????????num?=?Math.floor(num/10)
????????//...
????}
????return?result
}
結果
mod
num
0
3
12
0*10 +3 = 3
2
1
3*10 +2 = 32
1
0
32*10+1 = 321
function?reverseNum(num)?{
????let?pos?=?true
????if?(num?<?0)?{
????????pos?=?false
????????num?=?Math.abs(num)
????}
????let?result?=?0
????while?(num?>?0)?{
????????let?mod?=?num?%?10
????????num?=?Math.floor(num/10)
????????result?=?result?*?10?+?mod
????}
????//...
}
function?reverseNum(num)?{
????let?pos?=?true
????if?(num?<?0)?{
????????pos?=?false
????????num?=?Math.abs(num)
????}
????let?result?=?0
????while?(num?>?0)?{
????????let?mod?=?num?%?10
????????num?=?Math.floor(num/10)
????????result?=?result?*?10?+?mod
????}
????return?pos???result?:?(-1?*?result)
}
文章為作者獨立觀點,不代表DLZ123立場。如有侵權,請聯系我們。( 版權為作者所有,如需轉載,請聯系作者 )

網站運營至今,離不開小伙伴們的支持。 為了給小伙伴們提供一個互相交流的平臺和資源的對接,特地開通了獨立站交流群。
群里有不少運營大神,不時會分享一些運營技巧,更有一些資源收藏愛好者不時分享一些優質的學習資料。
現在可以掃碼進群,備注【加群】。 ( 群完全免費,不廣告不賣課!)