题目:
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:
输入: a = “11”, b = “1”
输出: “100”
示例 2:
输入: a = “1010”, b = “1011”
输出: “10101”
python代码
class Solution(object):
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
result=""
if len(a)==0 and len(b)!=0:
return b
if len(a)!=0 and len(b)==0:
return a
if len(a)>len(b):
for i in range(len(a)-len(b)):
b='0'+b
else:
for j in range(len(b)-len(a)):
a='0'+a
flag=False
length=len(a)
for k in range(length):
if a[length-k-1]=='1' and b[length-k-1]=='1':
if flag==True:
result='1'+result
else:
result='0'+result
flag=True
elif a[length-k-1]=='0' and b[length-k-1]=='0':
if flag==True:
result='1'+result
flag=False
else:
result='0'+result
else:
if flag==True:
result='0'+result
else:
result='1'+result
if flag==True:
result='1'+result
return result
思路:
对于输入的两个字符串长度不同的情况,对短的字符串前面补’0’,然后从后向前,穷举可能出现的情况,设置一个进位标志,处理进位情况。感觉把一些条件考虑清楚就行。