一起學(xué)算法-7.整數(shù)反轉(zhuǎn)

一、題目

LeetCode-7.整數(shù)反轉(zhuǎn)
鏈接:https://leetcode-cn.com/problems/reverse-integer/

難度:簡(jiǎn)單
給你一個(gè)32位的有符號(hào)整數(shù)x,返回將x中的數(shù)字部分反轉(zhuǎn)后的結(jié)果。

如果反轉(zhuǎn)后整數(shù)超過32位的有符號(hào)整數(shù)的范圍 [?2^31, 2^31 ? 1] ,就返回 0。

假設(shè)環(huán)境不允許存儲(chǔ) 64 位整數(shù)(有符號(hào)或無符號(hào))。

示例 1:
輸入:x = 123
輸出:321

示例 2:
輸入:x = -123
輸出:-321

示例 3:
輸入:x = 120
輸出:21

提示:

  • -2^31 <= x <= 2^31 - 1

二、解題思路

首先我們想一下,怎么去反轉(zhuǎn)一個(gè)整數(shù)?
把整數(shù)變成字符串,再去反轉(zhuǎn)這個(gè)字符串嗎?
這種方法是可以的,但是并不好。實(shí)際上我們只要能拿到這個(gè)整數(shù)的末尾數(shù)字就可以了。
以123為例,先拿到3,再拿到2,最后是1,然后按照順序拼接就達(dá)到反轉(zhuǎn)的效果了。
那么問題又來了,怎么拿到末尾數(shù)字呢?這個(gè)比較簡(jiǎn)單,取模就好了。
本題還要考慮負(fù)數(shù)的情況,所以判斷條件不是x>0,而是x!=0。
最后就是判斷反轉(zhuǎn)后的數(shù)是否會(huì)溢出,這個(gè)直接和32位的有符號(hào)整數(shù)214748364比較就行了。

三、實(shí)現(xiàn)過程

c++

class Solution {
public:
    int reverse(int x) {
        int res = 0;
        while(x!=0){
            //每次取末尾數(shù)字
            int tmp = x%10;
            //判斷是否 大于 最大32位整數(shù)
            if (res>214748364 || (res==214748364 && tmp>7)) {
                return 0;
            }
            //判斷是否 小于 最小32位整數(shù)
            if (res<-214748364 || (res==-214748364 && tmp<-8)) {
                return 0;
            }
            res = res*10 + tmp;
            x /= 10;
        }
        return res;
    }
};

PHP

class Solution {

    /**
     * @param Integer $x
     * @return Integer
     */
    function reverse($x) {
        $res = 0;
        while ($x) {
            $res = $res * 10 + ($x % 10);
            if ($res > 2147483647 || $res < -2147483647) return 0;
            $x = intval($x / 10);
        }
        return $res;
    }
}

JavaScript

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) {
    let res = 0;
    while (x) {
        res = res * 10 + (x % 10);
        if (res > 2147483647 || res < -2147483647) return 0;
        x = parseInt(x / 10);
    }
    return res;
};

四、小結(jié)

  1. 時(shí)間復(fù)雜度:O(log∣x∣)。翻轉(zhuǎn)的次數(shù)即x十進(jìn)制的位數(shù)。
  2. 空間復(fù)雜度:O(1)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容