首页 > 其他 > 详细

leecode7:整数反转

时间:2021-03-10 00:14:34      阅读:41      评论:0      收藏:0      [点我收藏+]

1.题目描述

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

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

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

2.示例

示例 1:

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

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

输入:x = 120
输出:21
示例 4:

输入:x = 0
输出:0

3.分析

此题简单,不过需要注意的是题目限制整形长度为32位,且超位报错。这就使得我们在判断结果是否越界的时候不能在最后判断(最后判断的方法仅需判断结果和原数符号是否相等即可)。

另外这个报错不能通过try,catch来处理,只能在结果加数之前进行判断。

4.代码

#include<math.h>
class Solution {
public:
    int reverse(int x) {
        int base =0;//位数
        int tempX = x;//临时变量
        int result =0;//结果
        while(tempX/10!=0){//计算位数
            tempX=tempX/10;
            base++;
        }
        tempX =x;//重设临时变量
        for(int i=0;i<=base;i++){//逆序结果
            double temp = tempX%10*pow(10,base-i);//此处注意数据类型为double,使用int会丢失精度
            if(result+temp>pow(2,31)-1||result+temp<-1*pow(2,31)){
                return 0;
            }
            result+=temp;
            tempX=tempX/10;
        }
        return result;//未越界

    }
};

 

leecode7:整数反转

原文:https://www.cnblogs.com/fangexuxiehuihuang/p/14508902.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!