美文网首页
7-Reverse Integer

7-Reverse Integer

作者: 富贵山庄王动 | 来源:发表于2017-06-30 14:17 被阅读0次

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

相关文章

网友评论

      本文标题:7-Reverse Integer

      本文链接:https://www.haomeiwen.com/subject/reabcxtx.html