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的数组不是关键,随便声明的。能保存整数就可以了。