精品国产三级a在线观看网站,亚洲综合色成在线观看,亚洲熟妇一区二区三区,,中文字幕成人精品久久不卡 ,永久免费av无码网站国产

原題鏈接在此 https://leetcode.cn/problems/reverse-integer/

一個(gè)常見的算法問題是反轉(zhuǎn)正整數(shù):將 12345 變成 54321。乍一看,這個(gè)問題似乎很簡(jiǎn)單——將整數(shù)轉(zhuǎn)為字符串,然后轉(zhuǎn)為數(shù)組,反轉(zhuǎn)數(shù)組,然后將其轉(zhuǎn)為字符串,最后再次化為整數(shù)。雖然該解決方案可能會(huì)得到“54321”,但這并不是解決問題的最佳方法。

如果算法的輸入值是整數(shù),并且預(yù)期輸出是整數(shù),那么問題的最佳解決方案不涉及將整數(shù)轉(zhuǎn)換為另一種數(shù)據(jù)類型。相反,要解決簡(jiǎn)單的“反轉(zhuǎn)整數(shù)”問題,您應(yīng)該使用模和簡(jiǎn)單的數(shù)學(xué)。

首先要做的是編寫一個(gè)函數(shù),我將其稱為reverseNum,它接受一個(gè)數(shù)字。然后,初始化一個(gè)新變量,調(diào)用result并將其設(shè)置為零。結(jié)果就是你最終將返回的結(jié)果:

function?reverseNum(num)?{
????let?result?=?0

????//...

????return?result
}

現(xiàn)在,您想要對(duì)數(shù)字執(zhí)行操作,直到輸入等于零。為此,創(chuàng)建一個(gè) while 循環(huán):

function?reverseNum(num)?{
????let?result?=?0

????while?(num?>?0)?{
????????//...
????}

????return?result
}

在 while 循環(huán)內(nèi),您要做的第一件事是獲取數(shù)字的模。模運(yùn)算符 (%) 返回余數(shù),因此如果執(zhí)行類似 的操作13%10,結(jié)果將為 3,因?yàn)?13/10 的余數(shù)為 3。在此算法中,您需要重復(fù)獲取輸入數(shù)字的最后一個(gè)值,這可以使用模來完成


function?reverseNum(num)?{
????let?result?=?0

????while?(num?>?0)?{
????????let?mod?=?num?%?10
????????//...
????}

????return?result
}

現(xiàn)在您已經(jīng)有了模數(shù),您需要修改原始數(shù)字,以便最終值不再包含在數(shù)字中。為此,您必須將數(shù)字除以 10,并對(duì)該操作執(zhí)行 Math.floor() :

function?reverseNum(num)?{
????let?result?=?0

????while?(num?>?0)?{
????????let?mod?=?num?%?10
????????num?=?Math.floor(num/10)
????????//...
????}

????return?result
}

最后,您需要修改“結(jié)果”變量。您想要將“mod”添加到結(jié)果中,但每次執(zhí)行 while 循環(huán)時(shí),您都需要將現(xiàn)有結(jié)果乘以 10,以便它變得更長(zhǎng),而不是簡(jiǎn)單地將數(shù)字的所有值相加:就是這樣!為了測(cè)試這個(gè)解決方案是否有效,讓我們使用真值表嘗試數(shù)字“123”:

結(jié)果 mod num
0 3 12
0*10 +3 = 3 2 1
3*10 +2 = 32 1 0
32*10+1 = 321

由于 num 現(xiàn)在為 0,因此 while 循環(huán)不再執(zhí)行,函數(shù)返回結(jié)果,即 321。


如果輸入可以是正數(shù)或負(fù)數(shù),您可以通過在開始時(shí)檢查是否正確來輕松修改此函數(shù),然后根據(jù)需要在末尾添加負(fù)號(hào)。

首先,實(shí)例化一個(gè)變量并將其設(shè)置為布爾值。如果輸入數(shù)字為正數(shù),則無需更改變量。如果為負(fù)數(shù),則將該變量設(shè)置為“false”,并將輸入的數(shù)字設(shè)置為其自身的絕對(duì)值:


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 語(yǔ)句中,您需要檢查 'pos' 變量是 true 還是 false。如果為 true,則只需返回結(jié)果即可。如果為 false,則說明輸入的值為負(fù)數(shù),因此返回結(jié)果乘以 -1:


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)
}



點(diǎn)贊(1) 打賞

評(píng)論列表 共有 0 條評(píng)論

暫無評(píng)論

服務(wù)號(hào)

訂閱號(hào)

備注【拉群】

商務(wù)洽談

微信聯(lián)系站長(zhǎng)

發(fā)表
評(píng)論
立即
投稿
返回
頂部