Leetcode PHP題解--D132 7. Reverse Integer

D132 7. Reverse Integer

題目鏈接

7. Reverse Integer

題目分析

這個題目比較簡單,就是給你一個-231~231-1的數(shù)字,要你翻轉(zhuǎn)過來。若超出這個范圍,需要返回0。

解題思路

比較簡單的方法是用strrev函數(shù)翻轉(zhuǎn),也可以用for循環(huán)翻轉(zhuǎn),但要注意符號。

先用是否小于0來判斷有沒有符號。有的話,需要把第一個元素用array_shift函數(shù)彈出來?;蛘邔o定的數(shù)字乘以-1也是一個辦法。

接下來把數(shù)字用str_split函數(shù)轉(zhuǎn)換成數(shù)組,因為我們只需要把數(shù)字的前半部分和后半部分對調(diào),所以for的終止條件只要到一半就好了。

最后,要判斷是否大于給定的區(qū)間。這里要注意,不能用PHP的內(nèi)置常量PHP_INT_MAX和PHP_INT_MIN。因為這個是根據(jù)當前機器的位數(shù)決定的。如果是64位的處理器,它肯定是會大于32位的。

在這里我們直接算出這個數(shù)字,作為類常量存儲。判斷翻轉(zhuǎn)后的結(jié)果是否超出范圍,超出則返回0即可。

最終代碼

<?php
class Solution {

    /**
     * @param Integer $x
     * @return Integer
     */
    const MAX = 2147483647;
    const MIN = -2147483648;
    function reverse($x) {
        $x_arr = str_split($x);
        $symbol = 1;
        if($x < 0){
            $symbol = -1;
            array_shift($x_arr);
        }
        $len = count($x_arr);
        for($i = 0; $i< $len / 2; $i++){
            $temp = $x_arr[$i];
            $x_arr[$i] = $x_arr[$len-$i-1];
            $x_arr[$len-$i-1] = $temp;
        }
        $final = $symbol * implode($x_arr);
        if($final < self::MIN || $final >= self::MAX){
            return 0;
        }
        return $final;
    }
}

若覺得本文章對你有用,歡迎用愛發(fā)電資助。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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