[算法分析与设计] leetcode 每周一题: 007. Reverse Integer



题目链接: 




题目大意:

给定一个整数 abc, 其中 a, b, c 各为一个数字, 返回其逆转形式, 也即 cba ;

题中还提到, 假定输入为 32位有符号整数, 而若逆转后的数 "溢出了", 则应返回 0 ;


例如: 给定: x = 123, 则输出应为: 321 ;

例如: 给定: x = -123, 则输出应为: -321 ;




解题过程:

(1) 题意很简单, 由于要考虑对溢出的处理, 所以考虑直接以整数的形式进行处理( 而非字符串) ;

(2) 就用最老实的做法, 记录正负情况, 然后分别对输入(设为 x)和输出(设为 rx)进行逐位处理 ; 至于溢出处理, 可以简单地用 rx 是否可以还原出 x 作判断标准 ;




代码如下:

class Solution {
public:
    int reverse(int x) {
        bool negative = false;
        if (x < 0) {
            negative = true;
        }
        
        x = abs(x);
        auto ret = 0;
        while (x > 0) {
            auto ret_assume = ret * 10;
            if (ret_assume / 10 != ret) {
                return 0;
            } else {
                ret = ret_assume;
            }
                
            auto a = x % 10;
            x /= 10;
            
            ret += a;
        }
        
        if (negative) {
            ret *= -1;
        }
        return ret;
    }
};




Runtime: 22 ms


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值