题目
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
示例 2:
示例 3:
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [$−2^{31}$, $2^{31}$ − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
题目链接
标签
个人解答
疑问点:
32 位的有符号整数需要怎么判断?
思路:
整数转成字符串类型,循环字符串字母进行处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| function reverse($x) { $rev = ''; $signed = '';
$x = (string)$x; for ($i = 0; $i < strlen($x); $i++) { if ($x{$i} == '-') { $signed = '-'; continue; }
$rev = $x{$i} . $rev; }
$return = $signed . (int)$rev;
if ($return < pow(-2, 31) || (pow(2, 31)-1) < $return) { return 0; }
return $return; }
function reverse($x) { $rev = 0; $max_val = pow(2, 31)-1; $min_val = pow(-2, 31);
while ($x) { $pop = $x % 10; $x = bcdiv($x, 10);
if ($rev > bcdiv($max_val, 10) || ($rev == bcdiv($max_val, 10) && $pop > 7)) return 0; if ($rev < bcdiv($min_val, 10) || ($rev == bcdiv($min_val, 10) && $pop < -8)) return 0;
$rev = bcmul($rev, 10) + $pop; }
return $rev; }
|
做题总结
一开始没有静下心来收集和拆分难点,所以一直拖到现在才做,做的时候意外的简单。