給你一個 32 位的有符號整數(shù) x ,返回將 x 中的數(shù)字部分反轉(zhuǎn)后的結(jié)果。
如果反轉(zhuǎn)后整數(shù)超過 32 位的有符號整數(shù)的范圍 [−231, 231 − 1] ,就返回 0。
假設(shè)環(huán)境不允許存儲 64 位整數(shù)(有符號或無符號)。
示例 1:
輸入:x = 123
輸出:321
示例 2:
輸入:x = -123
輸出:-321
示例 3:
輸入:x = 120
輸出:21
示例 4:
輸入:x = 0
輸出:0
用棧?
或者把整數(shù)變成字符串,再去反轉(zhuǎn)這個字符串?
這兩種方式是可以,但并不好。
怎么拿末尾數(shù)字呢?
好辦,用取模運算就可以了
這么看起來,一個循環(huán)就搞定了,循環(huán)的判斷條件是x>0
但這樣不對,
看起來這道題就這么解決了,但請注意,題目上還有這么一句
假設(shè)我們的環(huán)境只能存儲得下 32 位的有符號整數(shù),則其數(shù)值范圍為 [−2^31, 2^31 − 1]。
也就是說我們不能用long存儲最終結(jié)果,而且有些數(shù)字可能是合法范圍內(nèi)的數(shù)字,但是反轉(zhuǎn)過來就超過范圍了。
假設(shè)有1147483649這個數(shù)字,它是小于最大的32位整數(shù)2147483647的,
但是將這個數(shù)字反轉(zhuǎn)過來后就變成了9463847411,
這就比最大的32位整數(shù)還要大了,這樣的數(shù)字是沒法存到int里面的,所以肯定要返回0(溢出了)。
甚至,我們還需要提前判斷
上圖中,綠色的是最大32位整數(shù)
第二排數(shù)字中,橘子的是5,它是大于上面同位置的4,這就意味著5后跟任何數(shù)字,都會比最大32為整數(shù)都大。
所以,我們到【最大數(shù)的1/10】時,就要開始判斷了
對于負(fù)數(shù)也是一樣的
上圖中綠色部分是最小的32位整數(shù),同樣是在【最小數(shù)的 1/10】時開始判斷
以上就是python簡單實現(xiàn)整數(shù)反轉(zhuǎn)的畫解算法的詳細(xì)內(nèi)容,更多關(guān)于python整數(shù)反轉(zhuǎn)的畫解算法的資料請關(guān)注腳本之家其它相關(guān)文章!
標(biāo)簽:呼倫貝爾 三亞 安慶 銀川 湘西 葫蘆島 呼倫貝爾 烏魯木齊
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python簡單實現(xiàn)整數(shù)反轉(zhuǎn)的畫解算法》,本文關(guān)鍵詞 python,簡單,實現(xiàn),整數(shù),反轉(zhuǎn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。