力扣https://leetcode-cn.com/problems/JFETK5/
给定两个 01 字符串 a
和 b
,请计算它们的和,并以二进制字符串的形式输出。
输入为 非空 字符串且只包含数字 1
和 0
。
func addBinary(a string, b string) string {
alength:=len(a)
blength:=len(b)
res:=make([]int,0,0)
var last int
for alength>=1&&blength>=1{
ai,_:=strconv.Atoi(string(a[alength-1]))
bi,_:=strconv.Atoi(string(b[blength-1]))
tmp:=ai+bi+last
if tmp==3 {
res = append(res,1)
last = 1
}else if tmp==2{
res = append(res,0)
last = 1
}else{
res = append(res,tmp)
last = 0
}
alength--
blength--
}
for alength>=1{
ai,_:=strconv.Atoi(string(a[alength-1]))
tmp:=ai+last
if tmp==2{
res = append(res,0)
last = 1
}else{
res = append(res,tmp)
last = 0
}
alength--
}
for blength>=1{
bi,_:=strconv.Atoi(string(b[blength-1]))
tmp:=bi+last
if tmp==2{
res = append(res,0)
last = 1
}else{
res = append(res,tmp)
last = 0
}
blength--
}
if last!=0{
res = append(res,last)
}
var str string
for i:=len(res)-1;i>=0;i--{
str = str + strconv.Itoa(res[i])
}
return str
}