LeetCode(力扣)7.整数反转。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.解题思路

  • 该题是简单题,如果题目没有明确要考虑溢出的问题,很难会想到还会有转换后溢出的情况,估计是因为是简单题所以才明示出来的。我们只需要定义一个64位的变量来存放结果,然后再在最后判断这个64位的变量是否对32位的int型变量溢出则可以。
  • 具体思路:需要一个64位的变量来存放结果,则定义一个long long 型的变量,用对10求余来得出当前个位数的值,并用这个值加上当前结果乘以10得出新结果,把剩余的数除以10得出新的当前剩余值。以此循环,直到剩余值为0,退出循环,则得到一个可能超出整数取值范围的结果。最终判断结果是否整数溢出,可以使用判断当前值与强制转换为整形的值是否相等,相等则不整数溢出并返回当前值,不相等则整数溢出并放回0。注意该方法不需要考虑x的正负,因为在运算中没有涉及到符号,且64位的变量足够大来存放结果。

3代码:

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

4. 提交执行结果:

在这里插入图片描述

生活不易,如果你觉得该文章对你有帮助,请帮忙点个赞👍,如有指教和讨论,请在评论区留言一起探讨。感谢观看!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值