Leetcode_Reverse Integer[easy]

来源:互联网 发布:防火墙udp端口4950 编辑:程序博客网 时间:2024/06/07 00:41

Reverse digits of an integer.

Example1: x = 123, return 321

Example2: x = -123, return -321


Analysis: please consider the overflows, the 32 bits integers are from -2^(31) to 2^(31)-1

the first version:

int reverse(int x) {    if(x == -2147483648) // -x = x = 10000000_00000000_00000000_00000000    {        return 0;    }    int y = (x < 0)?(-x):x;    int reverseDigits = 0;    while(y >= 10)    {        reverseDigits = y%10 + reverseDigits*10;        y = (y - y%10)/10;    }    if((reverseDigits >  214748364) || ((reverseDigits == 214748364)&&(y > 7)))// to avoid the overflow    {        return 0;    }    reverseDigits = reverseDigits*10 + y;    reverseDigits = (x < 0)?(-reverseDigits):reverseDigits;    return reverseDigits;}

Runtime: 6 ms

Comparison: beats 24.74%


the second version is to use a long integer to memorize the result. The code is simple

int reverse(int x) {    long long reverseDigits = 0;    while(x != 0)    {        reverseDigits = x%10 + reverseDigits*10;        x = (x - x%10)/10;    }    if((reverseDigits >  2147483647) || (reverseDigits < -2147483648))// to avoid the overflow    {        return 0;    }    return reverseDigits;}
Runtime: 6ms

Comparison: 24.74%


0 0
原创粉丝点击