给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "1"
输出: "100"
示例 2:
输入: a = "1010", b = "1011"
输出: "10101"
解题思路:
逆序遍历 a 和 b 两字符串,如果 a + b = 0(sum) 就说明两个全部都是 0 ,ans(结果) 就直接 追加(sum%2) 0 ,如果a + b = 1, ans 就直接追加 1 , 如果a + b = 2, 就说明两个全部为 1 , ans 还是追加 0 ,但是进位(jin)设置为 1 ,在遍历下一次的时候,直接让 sum = jin ,就考虑到了进位的问题。
ord函数: 将字符串转换成 ascii
字符串逆序:[::-1]
class Solution:
def addBinary(self, a: str, b: str) -> str:
jin,sumab,ans = 0,0,''
i =len(a) - 1
j = len(b) - 1
while i >=0 or j >= 0:
sumab = jin
sumab += ord(a[i]) - ord('0') if i >= 0 else 0
sumab += ord(b[j]) - ord('0') if j >= 0 else 0
ans += str(sumab%2)
jin = int(sumab/2)
i -= 1
j -= 1
if jin > 0:
ans += str(jin)
return ans[::-1]
版权声明:本文为bi_diu1368原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。