No.7 Reverse Integer

No.7 Reverse Integer

Reverse digits of an integer.

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

反转数字:将对10整除和取余的结果逆置即可
难点即细节:溢出。符号
疑问:溢出的,怎么处理?——提交一次出错后,知道应该是返回0

为防溢出,提升类型为long long,注意判断INT_MAX、INT_MIN

 1 #include "stdafx.h"
 2 #include <string>
 3 #include <iostream>
 4 #include <unordered_map>
 5 
 6 using namespace std;
 7 
 8 
 9 class Solution
10 {
11 public:
12     int    reverse(int x)
13     {//反转数字:将对10整除和取余的结果逆置即可
14      //难点即细节:溢出。符号
15      //疑问:溢出的,怎么处理?——提交一次出错后,知道应该是返回0
16 
17         int sign = 1;//记录符号:1为正、-1为负
18         long long convert = x;
19         long long result = 0;
20         if(x<0)
21         {
22             sign = -1;
23             convert = -convert;
24         }
25 
26         while(convert != 0)
27         {
28             result = result*10 + convert%10;
29             convert /= 10;
30         }
31 
32         result = (sign==-1) ? -result : result;    
33         //这样做,其实挺取巧,但是,效率还不错!!!
34         if(result > INT_MAX)
35         //   return INT_MAX;
36             return 0;//提交一次之后得到的教训!!!
37         if(result < INT_MIN)
38         //    return INT_MIN;
39             return 0;//提交一次之后得到的教训!!!
40         return result;
41     }
42 };
43 
44 
45 int main()
46 {
47     Solution sol;
48 
49     int test[] = {123,-123,000,INT_MIN,1234567890,1234567890123,INT_MAX};
50     //对于反转之后明显越界的,置为INT_MAX或INT_MIN
51 
52     for(auto const &i : test)
53         cout << i <<" : "<< sol.reverse(i)<<endl;
54     return 0;
55 }
原文地址:https://www.cnblogs.com/dreamrun/p/4536931.html