题目:
给你一个 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
思考:
先将数字变成字符串,判断第一个数是不是符号,是的话,放一个变量存放,作为记号,然后在循环中区分正负数的区别,(这里就用到了这个变量,是负数的话就unshift到新数组的开头,不是的话就不管),最后转成number类型返回就可以,这里注意题目对数字大小范围的限制
/**
* @param {number} x
* @return {number}
*/
const x = 0;
var reverse = function (x) {
let str = x.toString().split("");
let sta = 0;
let new_str = [];
if (str[0] === "-") {
sta = 1;
}
if (sta == 1) {
for (let i = str.length - 1; i >= 1; i--) {
new_str.push(str[i]);
}
new_str.unshift("-");
} else {
for (let i = str.length - 1; i >= 0; i--) {
new_str.push(str[i]);
}
}
let num = new_str.join("");
console.log(Number(num));
if (Number(num) < -(2 ** 31) || Number(num) > 2 ** 31 - 1) {
return 0;
} else {
return Number(num);
}
};
reverse(x);