php算法题7整数反转

46次阅读

共计 447 个字符,预计需要花费 2 分钟才能阅读完成。

7. 整数反转

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

 输入: 123
输出: 321

示例 2:

 输入: -123
输出: -321

示例 3:

 输入: 120
输出: 21

一、

思路:

首先按照取余,和除的方式,来反转整数 int。但是有一个问题就是,就是反转之后的可能会超过整数 int 的范围。
这里提一下就是 php 没有常量表示 32 位有符号 int 的大小,所以就需要自己算

function reverse($x) {if (!is_int($x)) return 0;
        $rev = 0;
        $max = pow(2,31)-1;//32 位有符号最大整数
        $min = -pow(2,31);//32 位有符号最小整数
        while ($x != 0){
            $pop = $x%10;
            /**
            * php 除法会自动转型为 double,所以要进行类型转换
            * 或者 $x = ($x-$pop)/10
            */
            $x = (int)($x/10);
            $rev = $rev*10 + $pop;
            if($rev > $max || $rev < $min){return 0;}
        }

        return $rev;
    }

正文完
 0