首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Reverse Integer-整数的反转

2013-10-30 
Reverse Integer--整数的反转原题:Reverse digits of an integer.反转一个整数的数字。例子如下:Example1

Reverse Integer--整数的反转

原题:

Reverse digits of an integer.

=>反转一个整数的数字。例子如下:

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

 

class Solution {public: int reverse(int x) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. };

 

晓东分析:

这个题目就反转本身而言是很简单的,晓东就不多分析了。所以,我主要来说一下溢出的问题,我个人的思路就是在得到反转的值的时候,先不乘上最高位,留着进行比较。

所以总的来说,还是不复杂的。

 

代码实现:

class Solution {public:    int reverse(int x) {        // IMPORTANT: Please reset any member data you declared, as        // the same Solution instance will be reused for each test case.        int max_first_bit = 2; //default for 4        int max_remain_num = 147483647;                int num = 0;        int temp = abs(x);                while(temp >= 10){            num = num * 10 + temp % 10;            temp /= 10;        }                switch(sizeof(int)){            case 1:                max_first_bit = 1;                max_remain_num = 27;                break;            case 2:                max_first_bit = 3;                max_remain_num = 2767;                break;            case 4:                max_first_bit = 2;                max_remain_num = 147483647;                break;            case 8:                max_first_bit = 9;                max_remain_num = 223372036854775807;                break;        }                    if(x > 0){            if (temp < max_first_bit)                return num * 10 + temp % 10;            else if(num <= max_remain_num)                return num * 10 + temp % 10;            else                throw x;        }else{            if (temp < max_first_bit)                return 0 - (num * 10 + temp % 10);            else if(num <= max_remain_num + 1)                return 0 - (num * 10 + temp % 10);            else                throw x;        }            }};


执行结果:

 

1020 / 1020 test cases passed.Status:

AcceptedRuntime: 28 ms

 

希望大家有更好的算法能够提出来,不甚感谢。

 

若您觉得该文章对您有帮助,请在下面用鼠标轻轻按一下“顶”,哈哈~~·

 

 

 

 

热点排行