题解 | #大数加法#

大数加法

https://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475


package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 计算两个数之和
 * @param s string字符串 表示第一个整数
 * @param t string字符串 表示第二个整数
 * @return string字符串
*/
func solve( s string ,  t string ) string {
    
    if s=="" {
        return t
    }
    if t=="" {
        return s
    }
    sList,tList := []byte(s),[]byte(t) 
    reverse(sList)
    reverse(tList) 
    m,n:= len(sList),len(tList) 
    i,j:=0,0
    p:= 0 
    var ans []byte 
    for {
        if i>=m && j>=n {
            break 
        }
        var tmpa,tmpb int 
        if i>=m {
            tmpa = 0
        }else {
            tmpa = int(sList[i]-'0') 
        }

        if j>=n {
            tmpb = 0
        }else {
            tmpb = int(tList[j]-'0')
        }
        sum:= tmpa+tmpb+p 
        if sum>=10 {
            p = 1 
            sum-=10
        }else {
            p = 0 
        }
        ans = append(ans,byte(sum+'0'))
        i++
        j++
    }

    if p>0 {
        ans = append(ans,byte(p+'0'))
    }

    reverse(ans)

    return string(ans)



}


func reverse(list []byte) {
    l,r:=0,len(list)-1 
    for l<r {
        list[l],list[r] = list[r],list[l] 
        l++
        r--
    }

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务