LeetCode-7-整数反转-C语言

/*
* 算法思想:
* 先将给定的值转换为正数,反转这个正数,再根据之前的符号返回相应的结果
*
*
*/

int get_len(char *s){
    int i=0;
    while(*s != '\0'){
        s++;
        i++;
    }
    return i;
}

int get_num(char *s){
    int j = get_len(s) - 1;
    int num = 0;
    
    while(j >= 0){
        /* 考虑溢出大的情况,若溢出直接返回0 */
        if(num > INT_MAX/10){
            return 0;
        }
        
        num *= 10;
        
        num += s[j]-'0';
        j--;
    }
    
    return num;
    
}

int reverse(int y){
    char num[100];
    int flag = 0;
    unsigned int x;
    
    if(y == INT_MIN){
        /* 当y为最大的INT值时,其相反数int是放不下的,因此可以用unsigned int放下,为INT_MAX+1 */
        flag = 1;
        x = INT_MAX + 1;
    }
    
    if(y < 0 && y!= INT_MIN){
        flag = 1;
        x = (-y);
    }else{
        x = y;
    }
    
    sprintf(num, "%d", x);
    return flag ? -get_num(num) : get_num(num);
}


猜你喜欢

转载自blog.csdn.net/weixin_36094222/article/details/90116288