由一道leetcode的简单题引发的问题

    科技2022-07-15  123

    下面是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; };
    Processed: 0.018, SQL: 8