精华内容
下载资源
问答
  • LeetCode 整数反转( C语言版 )

    千次阅读 2019-03-30 17:43:25
    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 简洁思路: 此题就跟判断数字是否为回文数...

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

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

    在这里插入图片描述
    简洁思路:
    此题就跟判断数字是否为回文数的思路大致相同,依次取出整数的每一位数字给temp,再通过x/10使得数字依次减小十倍,通过result计算其反转后的数字。
    注:运行过程中当x>1534236461时,返回值为0,故需要添加一个判断语句。

    int reverse(int x) {
        long temp,result=0;;
        if(x>1534236461) return 0;
        while(x){
            temp=x%10;
            x=x/10;
            result=result*10+temp;
        }
        
        if(result>2147483642||result<(-2147483641)) return 0;
        return result;
    }
    
    展开全文
  • 最近开始每天都在刷LeetCode题库,从简单题开始入手,唯一的感慨就是简单题...给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321..

    最近开始每天都在刷LeetCode题库,从简单题开始入手,唯一的感慨就是简单题并不意味着真的简单啊!!!但是我想说的是,无论是否真的简单,都要继续坚持迎难而上。今天,解决了三道题而且用时相对以前用时少了许多,所以呢剩下的时间就不在去做更多的题了,梳理一下前几天做过的题,在复习巩固的同时分享给大家,希望对家有所帮助!!!

    一、题目描述

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

    示例 1:

    输入: 123
    输出: 321
     示例 2:

    输入: -123
    输出: -321
    示例 3:

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/reverse-integer
    【这里的格式实在是搞不好了】

    二、问题分析

    整数反转其实就是将一个整数的低位取下来放在高位。取一个十进制整数的低位我们首先想到的就是对这个十进制整数对10进行取模,取模之后要想得到下一位就得在对这个整数进行/10运算去掉最低位。即:123%10=3就将123的最低位取下来了,要想继续取下一位2就得先对123/10=12后在进行取模运算。接下来要解决的问题就是,将取下来的每一位重新排列(原来的低位放在高位,高位放在低位)。例如,这里的123,依次取下来三位为3  2  1,将这三个数组合为321。这里,我们就可以考虑每取一位就将这一位放入新的数字中,在下一位进行存放时只需要对这一位数*10在+上取下来的数,这样依此类推直到原数字为0我们就完成了对这个整数的反转。即:假设需要反转的数为123,反转后的数为dst,第一步:dst = 123%10=3;123 /= 10;第二步:dst = dst * 10 + 12%2=32;12/10;第三步:dst = dst*10 + 1%10=321,由于1/10=0将不再进行运算,因此反转后的结果就为321。这里我们需要注意的问题是,int型数据占4个字节,可存储的数据范围为[−231,  231 − 1],如果反转后的数值不再此区间内就要返回0,那么我们该如何判断反转后的数是否在区间 内呢?

    解决办法

    1.边转换边判断

    在转换的过程中,当每一次*10加下一位时我们都判断一下是否会超出int所能存储的范围,如果超出了直接返回0,如果没有超出则继续进行。

    while (x != 0) 
    {
        int pop = x % 10;
        x /= 10;
        if (rev > INT_MAX/10 || (rev == INT_MAX / 10 && pop > 7))
             return 0;
        if (rev < INT_MIN/10 || (rev == INT_MIN / 10 && pop < -8)) return 0;
        rev = rev * 10 + pop;
    }
    return rev;
    

    2.将目标值dst定义为long long int型,反转完在进判断是否在区间内。

    由于long long int占用8个字节,比int型数据存储的数值范围大许多,因此将目标值设置为long long int型待转换完成后判断是否超出范围。(long int 在不同的编译器中占得字节数不同,有的编译器给其分配四个字节有的分配8个字节,因此不建议使用long int)。

    long long int dst = 0;
    ...
    return dst == (int)dst ? dst : 0;

    方法1中我们只需要额外使用4个字节的空间就可以完成整数的反转,而方法2中我们需要额外使用8个字节的空间才能完成反转。但是,方法1在每反转一位都要进行一次判断,如果数字位数较大程序运行效率可能就会降低,而方法2一个数字只需要判断一次。方法1和方法2各有各的好处,可以根据实际要求选择。当然,关于本题解决方法远不止这两种方法。

    三、C语言程序

    int reverse(int x)
    {
    	long long int ret = 0;
    	while (x)
    	{
    		ret = ret * 10 + x % 10;
    		x /= 10;
    	}
    	return ret == (int)ret ? ret : 0;
    }

    四、总结

    在解决问题时,要注意看清题目要求合理利用题目所给条件解决问题,同时,还要注意临界值、特例等问题的处理。

    展开全文
  • leetcode 整数反转

    2021-03-26 21:45:41
    如果反转整数超过 32 位的有符号整数的范围[−231,231− 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 二、示例 三、示例代码 代码: class Solution { public int reverse(int...

    一、题目描述

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

    如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。

    假设环境不允许存储 64 位整数(有符号或无符号)。

    二、示例

    三、示例代码

    代码:

    class Solution {
        public int reverse(int x) {
            int rev = 0;
            while (x != 0) {
                int pop = x % 10;
                x /= 10;
                if (rev > Integer.MAX_VALUE/10 || (rev == Integer.MAX_VALUE / 10 && pop > 7)) return 0;
                if (rev < Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)) return 0;
                rev = rev * 10 + pop;
            }
            return rev;
        }
    }
    
    作者:LeetCode
    链接:https://leetcode-cn.com/problems/reverse-integer/solution/zheng-shu-fan-zhuan-by-leetcode/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    总结:

    关于数字的拆分,一定要想到取余、取整,这样可以有效的拆分数字,并且注意int类型的上下界,必须进行边界测试。

    本案例中的边界讨论值得学习


    参考:https://leetcode-cn.com/problems/reverse-integer

    展开全文
  • 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有...

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

    示例 1:

    输入: 123
    输出: 321
     示例 2:

    输入: -123
    输出: -321
    示例 3:

    输入: 120
    输出: 21
    注意:

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/reverse-integer
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    int reverse(int x){
        int temp;
        long long int returnNum = 0; 
    
        while(x)
        {
            temp = x % 10;
            x = x / 10;
            returnNum = temp + returnNum*10;
            if( returnNum > 0x7fffffff || returnNum < (signed int)0x80000000)
            {
                return 0;
            }
        }
        return returnNum;
    }

     

    展开全文
  • Leetcode 7 整数反转 C语言 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境...
  • LeetCode整数反转——C

    2019-08-03 20:12:32
    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符.....
  • 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1 输出: 321 输入: 123 示例 2 输入: -123 输出: -321 示例 3 输入: 120 输出: 21 /*limits.h #define INT_MAX 2147483647 #...
  • LeetCode7.整数反转

    2019-01-15 17:10:10
    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321  示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下...
  • leetcode整数反转

    2020-05-02 18:41:44
    先上题(来源于LeetCode) 就很简单的题,初始新数为0,直接原数对10取余得到尾数,原数除以10消去已得到的尾数,然后新数乘以10与尾数相加,一直重复至原数最高位。但是垃圾的我怕忘记数值约束的写法。。代码如下 ...
  • LeetCode整数反转

    2021-01-30 10:59:11
    给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。 如果反转整数超过 32 位的有符号整数的范围[−231, 231− 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 输入:x = ...
  • 7. 整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能...
  • 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号...
  • LeetCode整数反转

    千次阅读 2021-10-25 18:53:36
    #LeetCode#打卡每日一题整数反转 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数...
  • 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例1: 输入: 123 输出: 321 示例2: 输入: -123 输出: -321 示例3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 ...
  • LeetCode整数反转

    2018-12-10 11:18:34
    整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 ...
  • 题目描述:给定一个 32 位有符号整数,将整数中的数字进行反转。 方法:弹出和推入数字 &amp; 溢出前进行检查 思路 我们可以一次构建反转整数的一位数字。在这样做的时候,我们可以预先检查向原整数附加另一...
  • 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 ...
  • 整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 ...
  • LeetCode:7.反转整数

    2018-05-27 21:59:02
    给定一个 32 位有符号整数,将整数中的数字进行反转。 示例: 输入: 123 输出: 321 思路 这个题比较简单,唯一需要小心的地方就是整型溢出,控制好条件即可 但是自定测试用例的时候他的题有的测试用例还是...
  • C语言实现整数反转

    千次阅读 2020-10-09 15:49:25
    C语言实现整数反转 题目来源:LeetCode题库 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 例子1: 输入: 123 输出: 321 例子2: 输入:-123 输出:-321 例子3: 输入:1230 输出:321...
  • leetcode 7:反转整数

    2018-04-29 15:25:15
    题目:反转整数 - 题目面述: 给定一个32位有符号整数,将整数中的数字进行反转。 实例1: 输入:123 输出:321 实例2: 输入:-123 输出:-321 注意: 假设我们的环境只能存储 32 位有符号整数,其...
  • j将一个 32 位的有符号整数,要将这个整数中每一位数字进行反转。 假设我们的环境只能存储得下 32 位的有符号整数,第1位为符号位和后32位,其数值范围为 [−2^31 , 2^31 − 1]。 根据这个假设,如果反转整数溢出...
  • 定义sum时要注意其取值范围要比-2的32次方到2的32次方减1广,所以选用刚好的long 下面是代码 int reverse(int x) ... //反转整数 } if ((int)sum != sum) // 将得到的long类型的sum和int类型性的sum进
  • int reverse(int x){ long num = 0; while(x != 0){ int temp = x % 10; x = x / 10; num = num * 10 + temp; } if(num > 2147483647 || num < -2147483648){ return 0; }else{ .
  • II可被5整除的二进制前缀不用加号的加法选择排序转为小写字母图冗余连接II最大三角形面积三角形的最大周长仅仅反转字母二叉搜索树转累加树监控二叉树分糖果平衡二叉树从中序和后序遍历序列构造二叉树种花问题二叉...
  • 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的...
  • LC整数反转 c语言

    2021-01-28 17:46:32
    给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。 如果反转整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 示例 1: ...
  • 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0 示例 1: 输入:x = 123 输出:321 示例 2: 输入:x = -123 输出...
  • 整数反转 1.题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 625
精华内容 250
关键字:

leetcode整数反转c语言

c语言 订阅