【leetcode每日刷题】67. Add Binary

Given two binary strings, return their sum (also a binary string).

The input strings are both non-empty and contains only characters 1 or 0.

Example 1:

Input: a = "11", b = "1"
Output: "100"

Example 2:

Input: a = "1010", b = "1011"
Output: "10101"
package main
import(
	"fmt"
)
func addBinary(a string, b string) string {
	var sum int
	i:=len(a)	
	j:=len(b)
	if(i < j){
		i, j = j, i
		a, b = b, a
	}
	result := make([]byte, i+1)
	var carry int
	var curr int
    for j>0 {
		j--
		i--
		sum = int(a[i]-'0')+int(b[j]-'0') + carry
		curr = sum % 2
		carry = sum / 2
		result[i+1] = byte(curr + '0')
	}
	for i > 0{
		i--
		curr := (int(a[i]-'0') + carry) % 2
		carry = (int(a[i]-'0') + carry) / 2
		result[i+1] = byte(curr+'0')
	}
	result[0] = byte(carry+'0')
	i = 0
	for i<len(result)-1{
		if result[i] == '0'{
			i++
			continue
		}else{
			break
		}
	}
	return string(result[i:])
}
func main(){
	a := "1010"
	b := "1011"
	fmt.Println(addBinary(a,b))
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值