7-Reverse Integer

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容