下面是leetcode上的一道简单题
题目的内容就是输入-2^31 —2^31-1的数字,求出它的逆序数,逆序数溢出就返回0
算法的思路比较简单,就是用输入的数,不断的除10取余数,然后将商作为被除数,z一直进行下去,直到商为0.
但是其中需要注意的点很多,这里只是针对用js写代码的情况,js中的除法是没有整除这一说法的,它并不像C/C++那样
c/c++中的(/)
如果整型正数相除得到的是整型(商向下取整)就比如4/3 = 1
如果整型正数相除得到的是整型(商向上取整)及比如 -4/3 = -1
这里一定注意正数和负数的取整方式是不同的。原理是很好理解的。
js中(/)
js除法会保留小数部分,它会自动的判断结果是小数还是正数,不会对结果进行取舍,
这里就必须要用到js的函数Math.ceil()向上取整函数和Math.floor()向下取整函数
/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
//除十取余法
//需要注意如果是负数就需要s向上取整,正数是 向下取整
var yushu = 0,shang = x;
var number = 0;
do{
yushu = shang%10;
if(shang>0) shang = Math.floor(shang/10);
else shang = Math.ceil(shang/10);
number = number*10+yushu;
}while(shang!=0)
//设置超出-2^31和2^31-1之间就返回0
if(number>=2147483647||number<=-2147483648) return 0;
return number;
};