
package mainimport "fmt"func addBinary(a string, b string) string { var aList []byte for i:=len(a)-1;i>=0;i--{ aList = append(aList,a[i]) } var bList []byte for i:=len(b)-1;i>=0;i--{ bList = append(bList,b[i]) } var i,j,av,bv,res,carry int var resList []int for i<len(aList)||j<len(bList){ av =0 if i<len(aList){ av =int(aList[i]-'0') i++ } bv =0 if j<len(bList){ bv =int(bList[j]-'0') j++ } res = av+bv+carry carry =res/2 res = res%2 resList =append(resList,res) } if carry==1 { resList =append(resList,carry) } var s string for i =0;i<len(resList);i++{ s =fmt.Sprintf("%d%s",resList[i],s) } return s}func main() { fmt.Println(addBinary("11","1"))//100 fmt.Println(addBinary("1010","1011"))//10101 fmt.Println(addBinary("1111","1111"))//10101}

package mainimport ( "fmt")func addBinary(a string, b string) string { i := len(a)-1 j := len(b)-1 var av ,bv ,carry int var res string for i>=0||j>=0{ if i>=0{ av =int(a[i]-'0') i-- }else { av =0 } if j>=0{ bv =int(b[j]-'0') j-- }else { bv =0 } r := av+bv+carry carry =r/2 r = r%2 res =fmt.Sprintf("%d%s",r,res) } if carry==1 { res =fmt.Sprintf("%d%s",carry,res) } return res}func main() { fmt.Println(addBinary("11","1"))//100 fmt.Println(addBinary("1010","1011"))//10101 fmt.Println(addBinary("1111","1111"))//10101}
