力扣7.整数反转(溢出判断)

发布时间 2023-09-22 11:29:50作者: Coder何

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

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

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

 

示例 1:

输入:x = 123
输出:321

 

示例 2:

输入:x = -123
输出:-321

 

示例 3:

输入:x = 120
输出:21

 

示例 4:

输入:x = 0
输出:0

 

 

提示:

  • -231 <= x <= 231 - 1

 

题目的关键是考虑如何判断溢出,个人没有太简便的办法,代码参考了题解中的溢出判断。

 1 class Solution {
 2 public:
 3     int reverse(int x) {
 4         int n=x;
 5         int result=0;
 6         while (n!=0)
 7         {
 8             if(result>INT32_MAX/10||result<INT32_MIN/10) //只要满足了这个条件,result*10+n%10就一定不会溢出。
 9                 return 0;
10             result=result*10+n%10;
11             n/=10;
12         }
13         return result;
14         
15     }
16 };