给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。
示例
输入: a = "1010", b = "1011"
输出: "10101"
解析
1)二进制加法也是加法,其实是可以直接相加的 int(a, 2) + int(b, 2),但作为一个算法题,用系统函数显然不合适
2)不用系统函数的话,就按手算思路,从最后一位加起,该进位就进位即可
3)虽然这种解法排名不高,但没用系统函数,也兼顾了代码可读性,个人认为没毛病
代码示例
def addBinary(self, a: str, b: str) -> str: l = max(len(a), len(b)) a = a.zfill(l) b = b.zfill(l) ans = [] d = 0 for i in range(-1, -(l+1), -1): d, m = divmod(int(a[i]) + int(b[i]) + d, 2) ans.append(m) if d != 0: ans.append(d) return ''.join(map(str, reversed(ans))) a = "1010" b = "1011" print(addBinary(a, b))
执行用时:40 ms, 在所有 Python3 提交中击败了 46.80% 的用户.
本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/363