给你一个 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
这个题最开始是想将x转换数组去算,但是由于步骤过于繁琐,就放弃了
后来直接用数学方法乘除和取余就成功了,但是却没有判断到溢出,害真是难顶。
var reverse = function(x) {
if(x==0){return x;}//特判
var n;
var key = true;
if(x<0){
x=-x;
key = false;
}
var k=0;
while(x){
k = k*10 + x%10;
x = Math.floor(x/10)
n++;
}
if(key==false){
k=-k;
}
//Math.pow(2,31)是指2的31次方
if(k<Math.pow(-2,31)||k>=Math.pow(2,31)-1){
return 0
}else{
return k;
}
};
在过程中学到一些很有意思的方法
Array对象
pop() : 删除数组的最后一个元素并返回删除的元素
push():向数组的末尾添加一个或更多元素,并返回新的长度。
reverse(): 反转数组的元素顺序。
shift() : 删除并返回数组的第一个元素。
unshift():向数组的开头添加一个或多个元素,并返回新的长度。
sort():对数组的元素进行排序。
splice():从数组中添加或删除元素。
valueOf():返回数组的原始值。
toString():把数组转换为字符串,并返回结果。
String对象
split():把字符串分割为字符串数组。
toString():返回一个字符串。
Math对象
floor(x):对 x 进行下舍入。 floor(8.9)= 8
ceil(x):对 x 进行上舍入。ceil(8.9)= 9