php算法题:7整数反转

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;
    }
    原文作者:iMine
    原文地址: https://segmentfault.com/a/1190000020158519
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞