今天又是給大家分享乙個小的知識點 –翻轉乙個整數
相信我,知識點so so so easy……,並且很容易理解。
好了,閒話咱們就不多說了,直接開始今天的正題吧。
首先先來看下題目是什麼。
實現乙個整數的翻轉首先不看答案,按照自己的想法來解答一遍。如:初始值:123,翻轉後:321
初始值:-123,翻轉後:-321
有多少同學看到題目的瞬間想起來的是下面這種解法、
然後將得到的字串進行str.split('')
操作
之後將得到的陣列進行reverse
。
然後判斷是否要新增符號字首
最後得到正確答案。
?栗子:
function
reverseint
(n)`
.split(''
)let firstchar = str[0]
if(firstchar ===
'-')
else
str = str.
reverse()
.join(''
)return
(firstchar + str)*1
}
接下來我們就來分析一下這個解法的優勢和劣勢
優勢:
劣勢:
並且還需要關注當前整數是負數還是正數。
當然,這個解法肯定是對的,這個是毋庸置疑的,而且每個人都有每個人的理解。
但是~~
這裡還是要有但是,寫**嘛,總得有點兒追求,追求用更省事省力的方式來解決問題。
下面我們再來看另一種解法
接下來說的這種版本屬於數**算的版本,但是也是比較好理解的一種。
好,不多說,我們直接來看下小栗子吧!
?栗子:
function
reverseint
(n)return result
}
初看可能會有點兒不理解,莫慌,我們來解釋一下如何實現的。
解釋:
迴圈結束後將result
變數返回。
這裡我們用到了這樣乙個運算子~~
,這個是位運算。在這裡表示對運算結果取整。(詳細知識點可以檢視我之前的文章喲)
流程詳解:
接下來,我們通過原始值123
來檢視下這個演算法的執行步驟吧。
第一次迴圈:
n = 123第二次迴圈:result = 0
b = 123 % 10 = 3
n = 123 / 10 取整 = 12
result = 0 * 10 + 3 = 3
n = 12第三次迴圈:result = 3
b = 12 % 10 = 2
n = 12 / 10 取整 = 1
result = 3 * 10 + 2 = 32
n = 1到這裡整個的演算法已經執行結束。通過驗證我們可以發現乙個問題,此演算法對於負數來說同樣有效。result = 32
b = 1 % 10 = 1
n = 1 / 10 取整 = 0
result = 32 * 10 + 1 = 321
接下來我們來看下這個演算法的優勢
優勢:
ok,到這裡我們今天的分享內容就結束咯。
同樣,期待能給你帶來不一樣的理解和感悟。
bye~
在乙個無符號整數中翻轉位的順序
1 題目 請編寫函式 unsigned int reverse bits unsigned int value 這個函式的返回值是把value 的二進位制位模式從左到右變換一下後的值。例如,在 32位機器上,25這個值包含下列各個位 00000000000000000000000000011001 ...
倒置乙個整數
倒置整數 比如 倒置前 int a 123654 倒置後 int a1 456321 public class test02 int result 0 儲存置換了位置的整數最後結果 int j len 下面的核心思想 通過for迴圈依次將每一數字按照位置乘以對應的10的j次冪 比如 第一位數字res...
LeetCode 整數翻轉
中文版無需翻牆哦!給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據...