#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
Add Binary
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100".
'''
class Solution(object):
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
len1,len2 = len(a),len(b)
if len1 == 0:
return b
if len2 == 0:
return a
max_len = max(len1,len2)
ret = range(max_len + 1)
index = max_len
sum = 0
index_a,index_b = len1 - 1,len2 - 1
while index_a >= 0 or index_b >= 0:
if index_a >= 0:
sum += int(a[index_a])
index_a -= 1
if index_b >= 0:
sum += int(b[index_b])
index_b -= 1
ret[index] = str(sum%2)
sum /= 2
index -= 1
if sum > 0:
ret[0] = str(sum)
return ''.join(ret)
return ''.join(ret[1:])
if __name__ == "__main__":
s = Solution()
print s.addBinary('101','1')
59 leetcode - Add Binary
最新推荐文章于 2024-10-14 17:32:24 发布