题解 | #反转数字#

反转数字

http://www.nowcoder.com/practice/1a3de8b83d12437aa05694b90e02f47a

就这样

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 
 * @param x int整型 
 * @return int整型
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
int reverse(int x ) {
    // write code here
    unsigned int a,b=0,c,d,e=0;
    if(x>0)
        a=x;
    else
        a=-x;//去符号
    c=a/1000000000;//为判断最终是否溢出做准备
    d=a%1000000000;
    e=a;
    if(c>0)
    {
        a=d;
        goto A;
    }
    B:
    if(e==1)
    {
        if(d>846384741)//d是当x是十位数时,后九位数字的反转数字,后者是2的31次幂的后九位数字的反转数字
            return 0;
    }
     A:
    while(a/10!=0)
    {
        b=b+a%10;
        a/=10;
        b*=10;
    }
    b=b+a;
    if(x>0)
        b=b;
    else
        b=-b;
    if(c>0)
    {
       d=b,e=1;
        goto B;
    }
    
    return b;
}

结束

全部评论

相关推荐

尊嘟假嘟点击就送:加v细说,问题很大
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务