这个算法思想比较好理解,但是对于go字符操作的不熟练导致出错,对一些基础的知识,现在有些模糊,基本算法思想是:
1、补齐两个数组的长度
2、创建一个进位参数cn
3、从最高位开始进行加法
4、最高值进位为1,+1返回;否则直接返回结果
func addBinary(a string, b string) string {
if len(a) < len(b){
a, b = b, a
}
lenAB := len(a)-len(b)
for i := 0;i<lenAB;i++{
b = "0" +b
}
cn := 0
res := make([]byte, len(a))
for i := len(a)-1;i>=0;i--{
value := int(a[i] - '0') + int(b[i] - '0') + cn
if value == 2{
res[i] = '0'
cn = 1
}else if value == 3{
res[i] = '1'
cn = 1
}else if value == 0{
res[i] = '0'
cn = 0
}else{
res[i] = '1'
cn = 0
}
}
if cn == 1{
return "1" + string(res)
}
return string(res)
}