美文网首页leetcode刷题FLASK入门
【leetcode系列】002-整数反转

【leetcode系列】002-整数反转

作者: aymincoder | 来源:发表于2019-07-21 09:54 被阅读0次
leetcode.PNG

题意

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

示例

输入: 23  // 输出: 321
输入: -123 // 输出: -321
输入: 120  // 输出: 21

注意

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

需要注意一下两点:

1、类似1000这种数字,反转了之后不是0001,而是1
2、32位interger的取值范围

思路

这一题也可以有两种思路:

  • 字符串法:把数字转成字符串,每个元素储存一个数位,然后反转字符串元素顺序,最后把字符串转成数字,js里字符串的操作还是很方便的,这时需要考虑上面注意的两点。

  • 模十法:初始化一个result = 0,把给定的数字n除以十,得到余数作为最低位,商作为新的数字n,result = result + 余数*10,这样每次得到的最低位就会随着循环不断提升数位,从而得到逆序的result。

JavaScript的解法

字符串法:

var reverse = function (x) {
      if( x > Math.pow(2,31)-1 || x < Math.pow(-2, 31)){
            return 0;
        }
        let flag = true;
        if (x < 0) {
            flag = false;
        }
        let currentVal = Math.abs(x).toString();
        let result = "";
        for (let i = 0; i < currentVal.length; i++) {
            result += currentVal.charAt(currentVal.length - 1 - i);
        }
       /***或者这样写
         for (let i = currentVal.length-1; i >= 0; i--) {
          result += currentVal[i];
      }
        */
        if (!flag) {
            result = '-' + result;
        }
        if( result > Math.pow(2,31)-1 || !flag && result < Math.pow(-2, 31)){
            return 0;
        }
        return result 
  };

模十法:

var reverse = function(x) {
    var y = Math.abs(x);
    var result = 0;
    while(y > 0){
        result = result * 10 + y % 10;
        y = parseInt(y / 10);
    }
    result = x < 0 ? -result : result;
    return result >= -Math.pow(2,31) && result <= Math.pow(2,31) - 1 ? result : 0;
};

好激动,要出结果啦

字符串法也能解决问题,但是对数字的处理从数位的角度去思考问题也许可以会让人眼前一亮!
恭喜你,又掌握了一个新技能~
喜欢就点个关注吧~❤️
公众号【前端FE】
有任何问题都可以给我留言哦~

公众号:【前端FE】.PNG

相关文章

  • 【leetcode系列】002-整数反转

    题意 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 注意 假设我们的环境只能存储...

  • Leetcode-7-(整数反转)

    Leetcode-7-(整数反转)[https://leetcode-cn.com/problems/revers...

  • leetcode 整数反转

    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123输出: 321...

  • LeetCode:整数反转

    LeetCode第7号问题:整数反转 题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行...

  • 【leetCode】整数反转

    题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123输出: ...

  • leetcode:整数反转

    题目 作者:gpe3DBjDS1链接:https://leetcode-cn.com/problems/rever...

  • leetcode 整数反转

    给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整...

  • LeetCode 每日一题 [7] 整数反转

    LeetCode 整数反转 [简单] 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 来...

  • 第五周ARTS

    Algorithmic LeetCode整数反转需要考虑多种情况,负数反转、数据溢出等等 https://leet...

  • 一起学算法-7.整数反转

    一、题目 LeetCode-7.整数反转链接:https://leetcode-cn.com/problems/r...

网友评论

    本文标题:【leetcode系列】002-整数反转

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