1. 程式人生 > >LeeCode中ReverseInteger(PHP實現)

LeeCode中ReverseInteger(PHP實現)

<?php
/**
 * Created by PhpStorm.
 * User: jiangyu01
 * Date: 2018/10/1
 * Time: 14:09
 * Title:
 * 給定一個 32 位有符號整數,將整數中的數字進行反轉。
 * 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231,  231 − 1]。根據這個假設,如果反轉後的整數溢位,則返回 0
 */

$integer = -1200300000;         //定義有符號整數
/**
 * @param int $integer
 * 反轉函式
 */
 function ReverseInteger(int $integer) {
    $up_limit = pow(2,31)-1;        //上限
    $down_limt = -pow(2,31);        //下限
     //範圍判斷
    if (($integer > $down_limt ) && ($integer < $up_limit)) {
        $string = strval($integer);                 //型別轉換
        $string = rtrim($string,'0');       //去除最右邊的0
        $sign = '';                                 //定義符號變數
        if ($string[0] == '-'){
            $sign = '-';
            $string = substr($string,1);        //如果存在符號則記錄並且擷取除符號外的字元
        }elseif ($string[0] == '+'){
            $sign = '+';
            $string = substr($string,1);
        }
        $result = strrev($string);                   //反轉字串
        $result = $sign.$result;                       //新增符號
        $integer = intval($result);                    //轉換為整形
        //反轉後範圍判斷
        if (($integer < $down_limt) || ($integer > $up_limit)){
            echo '0';
        }else{
            echo $integer;
        }
    }else{
        echo '只能處理32 位有符號整數!';
    }
 }

ReverseInteger($integer);