LeetCode7整数反转(javascript解析)

题目描述

题目难度:中等

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
事例3:
输入: 120
输出: 21

注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

个人解题思路

本题还是比较简单的,只要注意下32位整数溢出就可以
只是做字符串的反转,最后转成数字即可,
可以用数据的reserve但是我觉得数组再拼装可能要额外的耗时,我就自己用字符串实现了一下

代码如下

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) {

    let max = Math.pow(2, 31) - 1;
    let min = -Math.pow(2, 31);
    let symbolFlag = x > 0? true: false;
    if(!symbolFlag) x = -x;
    let stringX = x.toString();
    let resultFront = '';
    let resultLater = '';
    for(let i = 0; i < stringX.length / 2; i ++) {
        resultLater = stringX[i] + resultLater;
        if(i !== stringX.length - 1 - i) {
            resultFront += stringX[stringX.length- 1 - i];    
        }
        
    }
    let result;
    if(symbolFlag) {
        result = Number(resultFront + resultLater);
    }else {
        result = -Number(resultFront + resultLater);
    }

    if(result >= max || result <= min) {
        return 0;
    }
    return result;
};

思考&实现总用时:约10分钟
运行结果

执行结果:通过
执行用时 :76 ms, 在所有 javascript 提交中击败了96.77%的用户
内存消耗 :35.8 MB, 在所有 javascript 提交中击败了37.89%的用户

看了一下最优解法,基本上也都差不多,差距可能就是leetcode提交计算的误差导致。

你可能感兴趣的:(分享)