7.整数反转
链接:7.整数反转
难度:Medium
标签:数学
简介:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
题解 1 - javascript
- 编辑时间:2020-02-11
- 执行用时:96ms
- 内存消耗:35.7MB
- 编程语言:javascript
- 解法介绍:转换成字符串进行翻转。
var reverse = function (x) {
let f = true;
if (x < 0) f = false;
const rev = parseInt(String(x).split('').reverse().join(''));
return rev > 2147483647 || rev < -2147483648 ? 0 : f ? rev : -rev;
};
题解 2 - typescript
- 编辑时间:2021-05-03
- 执行用时:92ms
- 内存消耗:39.6MB
- 编程语言:typescript
- 解法介绍:逐个累加。
function reverse(x: number): number {
let ans = 0;
const maxVal = 2 ** 31 - 1;
const minVal = (-2) ** 31;
while (x !== 0) {
ans = ans * 10 + (x % 10);
x = (x / 10) >> 0;
if (ans > maxVal || ans < minVal) return 0;
}
return ans;
}
题解 3 - typescript
- 编辑时间:2021-05-03
- 执行用时:100ms
- 内存消耗:39.6MB
- 编程语言:typescript
- 解法介绍:利用字符串翻转。
function reverse(x: number): number {
const num = Number(Math.abs(x).toString().split('').reverse().join(''));
return (x < 0 ? -1 : 1) * (num > 2 ** 31 - 1 || num < (-2) ** 31 ? 0 : num);
}
题解 4 - cpp
- 编辑时间:2021-12-20
- 内存消耗:5.8MB
- 编程语言:cpp
- 解法介绍:倒置。
class Solution {
public:
int reverse(int x) {
int f = 1;
if (x == INT_MIN) return 0;
if (x < 0) {
x = -x;
f = -1;
}
int num = 0;
while (x) {
if (num > INT_MAX / 10) return 0;
num = num * 10 + x % 10;
x /= 10;
}
return num * f;
}
};