zoukankan      html  css  js  c++  java
  • leecode7:整数反转

    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;//未越界
    
        }
    };
  • 相关阅读:
    React 组件
    React JSX
    React基础
    equals和hashCode详解
    Hibernate 二级缓存配置
    如何正确地停止一个线程?
    常见的异常以及常用的包,类,及其接口。
    5.水果
    Java -- Web前端面试题及答案(需更深入了解)
    微信access_token请求之简单缓存方法封装
  • 原文地址:https://www.cnblogs.com/fangexuxiehuihuang/p/14508902.html
Copyright © 2011-2022 走看看