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