第七题,Reverse Integer。(https://leetcode.com/problems/reverse-integer/description/)
注意事项:翻转之后,数据有可能会超过INT_MAX或者INT_MIN,所以最后用一个大一点的类型保存。
leetcode中的跑的最快的解决办法,8ms:
1 class Solution { 2 public: 3 int reverse(int x) { 4 int sign=x>=0?1:-1; 5 long val=x; //注意,此处用long来定义,避免溢出 6 if(x<0) 7 val=-val; 8 long num=0; 9 while(val!=0){ 10 num=num*10+val%10; 11 val/=10; 12 } 13 num=num*sign; 14 return (num>INT_MAX||num<INT_MIN)?0:num; 15 } 16 };
12ms的解决方案:(其实差不多)
1 class Solution { 2 public: 3 int reverse(int x) { 4 long y = 0 ; 5 while (x != 0){ 6 y = y*10 + x%10 ; 7 x = x / 10 ; 8 } 9 return (y<INT_MIN || y>INT_MAX) ? 0 : y; 10 } 11 };
我的解决办法:(我觉得差不多啊)
1 class Solution { 2 public: 3 int reverse(int x) { 4 long result = 0; 5 6 while(x) 7 { 8 int temp = x%10; 9 result = result * 10 + temp; 10 x = x/10; 11 } 12 13 if (result > INT_MAX || result < INT_MIN) 14 result = 0; 15 return result; 16 } 17 };
Over~~