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 }