Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
click to show spoilers.
Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.
32位有符号整数的翻转。
int reverse(int x) {
int sum=0,result_sum;
int i=0;
signed int result[33]={0};
int test=0;
while (1)
{
if (x == 0)
{
break;
}
result[i] = x%10;
test += result[i];
x=x/10;
i++;
}
for (int j = 0; j < i; ++j) {
int tmp=1;
for (int k = 0; k < i-j-1; ++k) {
tmp=1*10*tmp;
}
sum+=result[j]*tmp;
}
result_sum = sum;
while (1)
{
if (sum == 0)
{
break;
}
test -= sum%10;
sum=sum/10;
}
if (test != 0)
{
return 0;
}
return result_sum;
}
1.分离出各位数字,保存到一个数组里面,链表或者数组。
2.计算翻转后的整数
3.校验,是否溢出。通过求出各位数字之和是否相等。
说明
- 这个是由大到小的算法
- 由小到大的算法更简单
看了解答,只用了十五行代码,我也是醉了,五十多行情何以堪啊。result的数组不是关键,随便声明的。能保存整数就可以了。