百度面试:整数反转

hello,大家好!我是千羽。

分享一道面试,这是我之前面百度实习的时候,有出了一道算法题目:整数反转。

用通俗的话说:将那个啥整数颠倒过来。或者说,把整数给反过来整。要不就是,让整数来个大反转。😎

题目:整数反转


给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321

示例 2:
输入:x = -123
输出:-321

示例 3:
输入:x = 120
输出:21

示例 4:
输入:x = 0
输出:0
解法:翻转每一位数字

golang实现

func reverse(x int) int {
result := 0
for x != 0 {
pop := x % 10 // 例如当 x = 123 时,第一次循环 pop = 3。
x /= 10 // x /= 10,将 x 的值缩小,例如第一次循环后 x = 12。
if result > (1<<31-1)/10 || (result == (1<<31-1)/10 && pop > 7) {
return 0
}
if result < (-1<<31)/10 || (result == (-1<<31)/10 && pop < -8) {
return 0
}
result = result*10 + pop
}
return result
}
java实现

class Solution {
public int reverse(int x) {
long res = 0;
while (x != 0) {
res = res * 10 + x % 10;
x /= 10;
}
return (int) res == res ? (int) res : 0;
}
}
PHP实现

class Solution {
public function reverse($x) {
$res = 0;
while ($x!= 0) {
$res = $res * 10 + $x % 10;
$x = (int)($x / 10);
}
return ($res > 2147483647 || $res < -2147483648)? 0 : $res;
}
}
C++实现

class Solution {
public:
int reverse(int x) {
long long res = 0;
while (x!= 0) {
res = res * 10 + x % 10;
x /= 10;
}
return (res > INT_MAX || res < INT_MIN)? 0 : res;
}
};
https://leetcode.cn/leetbook/read/top-interview-questions-easy/xnx13t/

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/422856.html

(0)
联系我们
联系我们
分享本页
返回顶部