[leetcode 7] Reverse Integer(整数反转) c函数实现

[leetcode 7]

Description:

Reverse digits of an integer.

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

Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.


思路:将 int -->char[ ] -->long(解决反转溢出)-->int

int reverse(int x) {
        char string[11];  //max sign integer is  2147483647  . 11 bits is enough ,'\0' use 1 bit
        int length;  //store input integer bits
        long result;   
        char temp;  //for string swap
        int i, sign;  
        sign = x>0?1:-1;
        if(sign < 0)
            x = abs(x);  //negative num convert positive for deeling
        sprintf(string, "%d", x);
        length = strlen(string);
        if(length == 1)
            return x;
        for(i=0; i< length/2; i++)  //reverse char array
        {
            temp = string[i];
            string[i] = string[length - i -1];
            string[length - i -1] = temp;
        }
        result = atol(string);    //char convert to long to deel with reverse overflow
        if(sign* result > 2147483647 || sign* result < -2147483648)   //overflow return 0
            return 0;
        return (int)sign*result;  //long convert int return
 
}

你可能感兴趣的:(算法)