给你一个 32 位的有符号整数 x
,返回将 x
中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1]
,就返回 0。
示例 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 };