美文网首页
67. Add Binary

67. Add Binary

作者: sarto | 来源:发表于2022-04-14 14:56 被阅读0次

题目

给定两个二进制字符串 a,b。以字符串的形式返回两数相加之和。二进制高位在前。

解析

解法很简单,主要考虑如何和语言挂钩。
golang 字符串不能修改,所以需要新建一个字符串用于返回。
加法运算有可能溢出,所以新建字符串应该取 max(a,b) + 1,然后根据最后的结果决定是否保留最高为。

伪代码

代码

func addBinary(a string, b string) string {    
    la := len(a)
    lb := len(b)
    lr := la
    if lb > la {
        lr = lb
    }
    rst := make([]byte, lr+1)
    la--
    lb--
    var flag uint8
    for la>=0 || lb>=0 {
        var tmp uint8
        if la >=0 {
            tmp+=a[la]-'0'
            la--
        }
        if lb>=0 {
            tmp+=b[lb]-'0'
            lb--
        }
        tmp+=flag
        flag=tmp/2
        rst[lr] = byte('0' + tmp%2)
        lr--
    }
    if flag == 1 {
        rst[lr] = '1'
    } else {
        rst = rst[1:]
    }
    return string(rst)
}
image.png

相关文章

网友评论

      本文标题:67. Add Binary

      本文链接:https://www.haomeiwen.com/subject/kauasrtx.html