跳到主要内容

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