题目:
Given a 32-bit signed integer, reverse digits of an integer.
Example 1:
Input: 123
Output: 321
Example 2:
Input: -123
Output: -321
Example 3:
Input: 120
Output: 21
Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
思路:
直接 翻转,通过保存 n对10 取模 以及 n/10 之后的值,构建翻转之后的数。在翻转中会遇到越界的问题。可以先将返回的数定义为double类型, 通过查看强制转换成int 型数据 与double型数据进行对比,查看是否对于int型越界。
代码:
int reverse(int x){
int num = 0;
int mod =0;
int temp = 0;
double res =0;
if(x>-10 && x<10)
{
return x;
}
mod = x%10;
num =x/10;
// res = mod;
while(num != 0)
{
res = mod + 10* res;
mod = num%10;
num =num/10;
}
res = 10* res;
if((int)res != res)
{
return 0;
}
res = res +mod;
return res;
}
效率:
时间效率不错,就是占用空间有点大。