使用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;
} /**
* 使用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;
}
}