7.整数反转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

示例 1:

1
2
输入:x = 123
输出:321

示例 2:

1
2
输入: -123
输出: -321

示例 3:

1
2
输入: 120
输出: 21

示例 4:

1
2
输入:s = "ac"
输出:"a"

暴力破解方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* @param {number} x
* @return {number}
*/
var reverse = function (x) {
let str = String(Math.abs(x));
let len = str.length;
let result = "";
if (x < 0) {
result = "-";
}
for (let i = 0; i < len; i++) {
result += str[len - i - 1];
}
let b = Number(result);
if (b <= 2147483647 && b >= -2147483648) {
return b;
} else {
return 0;
}
};

方法二:

1
2
3
4
5
6
7
8
9
10
11
var reverse = function (x) {
let n = 0;
while (x !== 0) {
n = n * 10 + (x % 10);
x = ~~(x / 10);
}
if (n > 2 ** 31 - 1 && n < -(2 ** 31)) {
return 0;
}
return n;
};

方法三:

1
2
3
4
5
6
7
8
9
10
11
12
13
var reverse = function (x) {
let point = x >= 0 ? 1 : -1;
let absNumString = String(Math.abs(x));
let result =
Array.prototype.reduceRight.call(absNumString, (a, b) => {
return a + b;
}) * point;
if (result >= -(2 ** 31) && result <= 2 ** 31 - 1) {
return result;
} else {
return 0;
}
};