题意描述:
Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”.
给出两个二进制字符串,返回它们加和结果的二进制字符串。
思路分析:
先把两个数据对齐,长度短的在高位补0,然后从最低位开始遍历,逐位的模拟二进制加法,(对应位相加的结果+进位)模2做为和的当前位,若(对应位相加的结果+进位)大于等于2则将进位置为1,否则置为0,注意遍历到最后一位如果(对应位相加的结果+进位)仍然大于等于2需要在最前面加上1再输出
python实现:
class Solution:
# @param {string} a
# @param {string} b
# @return {string}
def addBinary(self, a, b):
lengthA=len(a);lengthB=len(b)
lendiff=lengthA - lengthB;diststring=''
for i in range(abs(lendiff)):
diststring+='0'
if lendiff>0:
b=diststring+b
else:
a=diststring+a
i=max(lengthA,lengthB)-1
resultString='';curCarry=0
while i>=0:
curPos=(int(a[i])+int(b[i])+curCarry)%2
resultString=str(curPos)+resultString
if i==0:
if (int(a[i])+int(b[i])+curCarry)>=2:
return '1'+resultString
else:
return resultString
if (int(a[i])+int(b[i])+curCarry)>=2:
curCarry=1
else:
curCarry=0
i-=1