Leetcode 7 - Reverse Integer

题目

<https://leetcode.com/problems/reverse-integer/

题意

反转一个32位的有符号整数。假如反转后是溢出的,则反转结果是0。

Example 1:

Input: 123
Output: 321

Example 2:

Input: -123
Output: -321

Example 3:

Input: 120
Output: 21

思路

超级水的题目。

可惜我写不好判断溢出的,看了题解才知道原来溢出判断也很简单~

总体思路:通过取余和除法,从个位开始往高位,逐步拿出每一位数字,并组合成新的数字。

唯一需要注意的是判断溢出,方案是:在给新数字加上新的一位数字前,都判断如果加了这一位是否会溢出即可。

代码

class Solution {
public://author's blog == http://www.cnblogs.com/toulanboy/
    int reverse(int x) {

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

        return result;
            
    }
};

运行结果

Runtime: 0 ms
Memory Usage: 8.3 MB

转载于:https://www.cnblogs.com/toulanboy/p/10868744.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值