• 7. 整数反转


    题目描述

    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

    示例 1:

    输入: 123
    输出: 321
    

     示例 2:

    输入: -123
    输出: -321
    

    示例 3:

    输入: 120
    输出: 21
    

    注意:

    假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

    解题思路:因为这道题涉及到整型数的溢出,首先想到的就是将整型转换为字符串类型,对字符串类型进行反转后再转化未整型。

    这里有一个问题,如果全程都使用int类型的数据,则再字符串转化为int的那个过程会出现问题,反转之后数据一旦大于INT_MAX或者小于INT_MIN,如果结构的数据类型是int,则会自动截取,而且也不能使用atoi来进行数据的转换,问题也是一样,一旦数据超出了int的范围,就会自动截取。所以这里我们使用atoll,将字符串转化为long long整型。



    class Solution { public: int reverse(int x) { int data = x; bool sign = true; if (data < 0) { data = data * -1; sign = false; } string str = to_string(data); int i = 0; int j = str.size()-1; while(i<j) swap(str[i++],str[j--]); long long reverse_data = atoll(str.c_str()); //这里是关键,使用atoll函数将字符串转化为long long 整型变量,超过INT_MAX也不会溢出 if(!sign) reverse_data = reverse_data * -1; if( (reverse_data>INT_MAX) || (reverse_data<INT_MIN)) reverse_data = 0; return reverse_data; } };
  • 相关阅读:
    【沟通的艺术】你能勾住你的听众么?
    java环境变量配置
    20140613故障处理纪要
    FBReaderJ源代码编译配置
    怎样加入� android private libraries 中的包的源码
    petshop4.0 具体解释之中的一个(系统架构设计)
    java推断字符串是否为乱码
    php递归无限极分类
    SIP入门(二):建立SIPserver
    线程间的通信
  • 原文地址:https://www.cnblogs.com/zhousong918/p/10102779.html
Copyright © 2020-2023  润新知