美文网首页
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