当前位置:   article > 正文

[力扣c语言实现]7. 整数反转_力扣第七题整数反转c语言

力扣第七题整数反转c语言

1. 题目描述

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

示例 1:

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

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

输入: 120
输出: 21
注意:

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

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

2.代码如下

int reverse(int x)
{
    int y = 0;
    while (x != 0)
    {
        int n = x % 10;
        if (y > INT_MAX / 10 || y < INT_MIN / 10)
        {//这个范围是一个简单的数学不等式推论出来的,就是避免在进行 y = y * 10 + n时数字溢出,所以要提前判断
            return 0;
        }
        y = y * 10 + n;
        x /= 10;
    }
    return y;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

3.关键宏定义讲解

//#define INT_MAX 2^31-1 //32位数表示的最大正整数
//#define INT_MIN -2^31 //…
//因为 y = y * 10 + n 很容易造成数值溢出,所以我们为了保证不溢出,要提前使得 y = y * 10 + n <=INT_MAX ==> y<=(INT_MAX -n)/10,
//负数同理。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/63458
推荐阅读
相关标签
  

闽ICP备14008679号