题目
给你一个 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
提示:
-231 <= x <= 231 - 1
分析
将数当作字符串,反向遍历就能解决问题了,需要注意两个点:
- 负数的处理;
- 超出 32 位数范围,直接返回 0。
解答
/**
* @param {number} x
* @return {number}
*/
var reverse = function (x) {
var isNegativeNumber = false;
if (x < 0) {
isNegativeNumber = true;
}
var xStr = x.toString();
var reverseXArr = [];
for (var i = xStr.length - 1; i >= 0; i--) {
reverseXArr.push(xStr[i]);
}
var result = parseInt(reverseXArr.join(""), 10);
if (isNegativeNumber) {
result = 0 - result;
}
if (result < -Math.pow(2, 31) || result > Math.pow(2, 31) - 1) {
result = 0;
}
return result;
};
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
发表回复