题意:
给定一个32位的有符号整数num,将num中的数字部分反转,最后返回反转的结果
1.只反转数字部分,符号位部分不反转
2.反转后整数num超过 32 位的有符号整数的范围,返回 0
3.假设本题不允许存储 64 位整数(有符号或无符号,即C++不能使用long long ,Java不能使用long等)
方法:
模拟
思路:模拟反转数字。
循环条件是 x 不为 0:
不断地 %10 (取余10)得到末尾的数字,加到答案数字中。
注意点:因为题目不允许存储64位整数,所以要通过以下代码判断溢出:if(res>INT_MAX/10||res<INT_MIN/10) //判断溢出 return 0;
class Solution { public: int reverse(int x) { int res = 0; while(x){ res=res*10+x%10;//取最低位数字追加到答案数字中 x/=10; if(res>INT_MAX/10||res<INT_MIN/10) //判断溢出 return 0; } return res; } };
时间复杂度:空间复杂度: