题目解析
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
- 首先我们知道题目给了我们一个整数,我们分析一下意思,系统想让我们将一个数反转过来,且反转过来的数值范围为[−2^31/, 2^31 − 1]。
解题思路
- 首先我们可以创建一个数组,把传入的数字转换成字符串的形式,在转换成数组的形式存储起来。
- 然后循环遍历这个数组,如果这个数传入进来的时候是负数,那我们就少遍历一次。把这些数倒序相加起来。最后将数组的第0项添加到最前面。反之,我们就全部遍历。
- 之后我们就可以将这个数转换为数字类型,同时清除转换之后开始为0的情况。
- 最后我们用3元运算判断这个数的范围。再将这个数返回即可。
完整代码
var reverse = function(x) {
var new_arr = [];
var str = "";
new_arr = x.toString().split("");
if(x<0){
for(var i = new_arr.length-1 ; i>0 ; i--){
str += new_arr[i];
}
str = new_arr[0]+str;
}else{
for(var i = new_arr.length-1 ; i>-1 ; i--){
str += new_arr[i];
}
}
str = parseInt(str);
str = str > Math.pow(2,31)-1 || -Math.pow(2,31) > str ? 0 :str;
return str;
};
网友评论