LeetCode之Reverse Integer

本文详细解析了LeetCode上的逆序整数题目,提供了两种解决方案:一是通过算术操作实现数字的逆序,二是将整数转换为字符串进行处理。同时,文中还介绍了C/C++中int、long、double、char等类型的表示范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

给一个32bit的整型数据,倒置输出,整数的范围是:[-2^32 - 1,2^32-1],倒置后的整数可能会溢出,如果溢出则输出结果为0。
举例:
输入:123 -123 1534236469(倒置后溢出)
输出:321 -321 0

解决思路

  • (1)算术:从最低位开始分离出数字,之前的结果乘10再加上分离的数字实现倒置
  • (2)转为string处理

c/c++中各种类型int、long、double、char、表示范围(最大最小值)如下图所示:

来自博文:(https://blog.youkuaiyun.com/xuexiacm/article/details/8122267)

可见int的最大值是:2147483647,最小值是:-2147483648
也可以使用c类库(limits.h)的INT_MIN、INT_MAX,如下图所示:
在这里插入图片描述

代码实现

  • (1)算术:
int reverse(int x) {
	        int temp;
	        int result = 0;
	        while(x){
	            temp = x % 10;
	            x = x / 10;
		        //整型最大值:2147483647
	            if (result > INT_MAX / 10 || (result == INT_MAX / 10 && temp > 7)) return 0; 
		        //整型最小值:-2147473648
		        if (result < INT_MIN / 10 || (result == INT_MIN / 10 && temp < -8)) return 0; 
		        result = result * 10 + temp;
	 	  }
	        return result;
}
  • (2)转为string处理
int reverse(int x) {
           int flag = 0;
           int result;
           if(x == 0)
               return 0;
           else if(x <= INT_MIN || x >= INT_MAX)
               return 0;
           else {
               if (x < 0){
                   flag = 1;
                   x = -x;
               }
               string str_x = to_string(x);
               string temp;
               for(auto it = str_x.cend()-1;it != str_x.cbegin()-1;it--)
                   temp += *it;
               double z = atof(temp.c_str());
               if(z > INT_MAX || z < INT_MIN)
                   return 0;
               else
                   result = (int)z;
           }
           if(flag)
               result = -result;
           return result;
    }

欢迎指正,如转载请注明出处

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值