题目:
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
解题思路:
判断边界超出返回0,然后取数的绝对值,除以10,取余数和商(为整数),商再除以10,上一次余数*10加这次的余数这样循环只到商为0;
代码:
class solution{
/**
* @param Interger $num
* @return Interger
*/
function reverse($num){
$newNum = 0;
$x = abs($num);
while($x>0){
$mon = $x%10;
$x = intval($x/10);
$newNum = $newNum*10+$mon;
}
$result = $x > 0 ? $newNum : -$newNum;
if($num > (pow(2,31)-1) || $num < pow(-2,31)){
return 0;
}
return $result;
}
}