Reverse Integer

来源:互联网 发布:jdk 7u51 windows x32 编辑:程序博客网 时间:2024/06/06 04:42

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

第一次提交代码如下,但是有一些用例没有通过

class Solution {public:    int reverse(int x) {        const int max = 0x7fffffff;  //int最大值          const int min = 0x80000000;  //int最小值          int sum = 0;           while(x != 0)          {              int temp = x % 10;              sum = sum * 10 + temp;              if (sum > max || sum < min)   //溢出处理              {                  sum = sum > 0 ? max : min;                    return sum;              }              x = x / 10;          }          return sum;       }};

后来修改了代码:

class Solution {public:    int reverse(int x) {        const int max = 0x7fffffff;  //int最大值        const int min = 0x80000000;  //int最小值        int sum = 0;        while(x != 0)        {            int temp = sum * 10 + x % 10;            x = x / 10;            if ( temp / 10 != sum )   //溢出处理            {                sum = 0;                break;            }            sum = temp;        }        return sum;     }};

注意

  1. 在处理整数的时候,需要选取适当的类型,例如:unsigned int 或者 long long int
  2. 考虑到数字范围溢出的情况的判断的方法,如上
  3. 清除每种类型的取值范围,可以使用十六进制表示其范围
0 0