首页 > 试题广场 >

使用php实现,给出一个32位的有符号整数,你需要将这个整数

[问答题]

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

示例 1:

输入: 123

输出: 321

 示例 2:

输入: -123

输出: -321

示例 3:

输入: 120

输出: 21


var_dump(Intrev(1234567890123456789));
function Intrev(int $number)
{
    if ($number == 0)
        return 0;
    $str_rev = ltrim(strrev(ltrim((string)$number, '-')), '0');
    if ($number < 0)
        $str_rev = '-'.$str_rev;

    $num_rev = (int)$str_rev;
    // 如果环境只支持32位有符号整数, 字符串转整数超出范围时会被截断, 再转回字符串则不相等
    if (strcmp($str_rev, (string)$num_rev) !== 0)
        return 0;
    // 如果环境支持超过32位有符号整数
    if ($num_rev > (1<<31)-1 || $num_rev < -(1<<31))
        return 0;
    return $num_rev;
}

发表于 2021-03-01 17:18:26 回复(0)
/**
     * 使用php实现,给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
     */
    public function Revint($int = 123450){
        $res = 0;
        while($int != 0)
        {
            $temp = $int % 10;    //获取余数
            $int = intval($int) / 10;    //目标数除以10
            $res = $res * 10 + $temp;    //目标数乘以10加余数,形成翻转
        }

        if($res > PHP_INT_MAX || $res < PHP_INT_MIN) {    //判断翻转后的整数是否大于最大整数或小于最小整数,溢出
            return 0;
        }else{
            return $res;
        }
    }

发表于 2021-02-23 10:33:08 回复(1)