翻轉乙個整數

2021-10-09 22:36:43 字數 1886 閱讀 3299

今天又是給大家分享乙個小的知識點 –翻轉乙個整數

相信我,知識點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 請根據...