美文网首页leetcode --- js版本
leetcode-Easy-第2期:Reverse Interg

leetcode-Easy-第2期:Reverse Interg

作者: 石头说钱 | 来源:发表于2019-02-23 18:40 被阅读2次

    题目反转输入整数

    反转后的整数如果不在[−2^31, 2^31 − 1]范围则返回0

    
    Input: 123
    Output: 321
    
    Input: -123
    Output: -321
    
    Input: 120
    Output: 21
    

    简单解法

    • 耗时:100ms
    var reverse = function(x) {
        const max = Math.pow(2,31) -1
        const min = -1 * Math.pow(2,31)
        
        let arr = String(x).split('').reverse();
        const len = arr.length - 1;
        if(arr[0] === 0){
            arr = arr.splice(0,1)
        }
        if(arr[len] === '-'){
            arr.splice(len,1)
            arr.unshift('-')
        }
        const reverseX = Number(arr.join(''))
        if(reverseX > max || reverseX < min) return 0
        return reverseX
    };
    
    • 解法二:
    var reverse = function(x) {
        const MAX = Math.pow(2,31) - 1
        const MIN = -1 * Math.pow(2,31)
    
        let res = 0;
        while (x !== 0) {
            // 获取余数,即从右边第一位开始的数字
            res = res * 10 + (x % 10); 
            //保留整数部分
            x = Math.trunc(x / 10); 
        }
        return (res > MAX || res < MIN) ? 0 : res;
    
    };
    
    • 解题思路:
    234
    1: res = 4,x = 23
    2: res = 4*10 + (23%10) = 40 + 3 = 43,
       x: Math.trunc(23/10) = 2
    3: res = 43*10 + (2%10) = 430 + 2 = 432
       x = Math.trunc(2/10) = 0
    
    跳出while循环,判断res是否在最大值和最小值之间
    
    • 知识点复习
    Math.floor(x) //小于x的最大整数
    Math.floor(-123/10) // -13
    
    Math.floor(x) // 返回四舍五入
    Math.round(-126/10) //  -13
    
    Math.trunc(x) // 返回x的整数部分,包含正负号
    Math.trunc(-123/10)  // -12
    
    

    相关文章

      网友评论

        本文标题:leetcode-Easy-第2期:Reverse Interg

        本文链接:https://www.haomeiwen.com/subject/axipyqtx.html