【面试题】反转整数

polaris · 2017-10-07 06:49:55 · 4742 次点击
func  Reverse(x int64) int64{
    var ret  int64
    sign := 0
    if x < 0{
        x = x * -1
        sign =  1
    }

    len ,tmp:= 0,x
    for {
        if tmp <0 || tmp == 0{
            break
        }
        len = len  + 1
        tmp = tmp / 10
    }


    for i:=len  ; i>0 ; i--{
        j := len -i
        if j!= 0{
            ret = ret * 10 + x% int64(math.Pow10(j + 1)) / int64(math.Pow10(j))
        }else{
            ret = ret + x %  10
        }
        fmt.Println(i,ret)
    }
    if sign != 0{
        ret = ret * -1
    }
    return ret;
}
#11
更多评论
func Reverse(x int32) int32 {

    var xx, rx, tnum, pos, negative int32
    //备份原值
    xx = x

    var posNum, posStart, maxLan int
    //int32最大长度
    maxLan = 11

    //判断是否负数
    negative = 1
    if x < 0 {
        negative = -1
        xx = xx * -1
    }

    for i := maxLan; i >= 0; i-- {
        tnum = int32(math.Pow10(i))
        if xx >= tnum {
            pos = xx / tnum
            if pos > 0 || posStart > 0 {
                if posStart == 0 {
                    posStart = 1
                }

                fmt.Println(i, pos)

                posNum++
                rx += pos * (int32(math.Pow10(posNum - 1)))
            }
            xx = xx - pos*tnum
        }
    }
    rx = rx * negative
    return rx
}
#1
polaris
社区,需要你我一同完善!

你这写的有点复杂了,而且还有 bug:Reverse(10010) 结果是 11,明显不对!

#2