[Notes] 每日一题 二进制求和

题目

给你两个二进制字符串,返回它们的和(用二进制表示)。

输入为 非空 字符串且只包含数字 1 和 0。

 

示例 1:

输入: a = "11", b = "1"
输出: "100"
示例 2:

输入: a = "1010", b = "1011"
输出: "10101"
 

提示:

每个字符串仅由字符 '0' 或 '1' 组成。
1 <= a.length, b.length <= 10^4
字符串如果不是 "0" ,就都不含前导零。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-binary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

  1. 直接字符串对位判断

代码

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        alen = len(a)
        blen = len(b)
        tmp_e = 0
        cur_e = 0
        result_str = ''
        if alen > blen:
            aa = a
            bb = b
            leng = alen
            mlen = blen
        else:
            aa = b
            bb = a
            leng = blen
            mlen = alen
        for i in range(leng):
            if i >= mlen:
                curr_2 = 0
            else:
                curr_2 = bb[-1 - i]
            curr_1 = aa[-1 - i]        
            cur_e = tmp_e + int(curr_1) + int(curr_2)
            if cur_e == 3:
                tmp_e = 1
                result_str = '1' + result_str
            elif cur_e == 2:
                tmp_e = 1
                result_str = '0' + result_str
            elif cur_e == 1:
                tmp_e = 0
                result_str = '1' + result_str
            else:
                tmp_e = 0
                result_str = '0' + result_str
        if tmp_e != 0:
            result_str = '1' + result_str
        return result_str
原文地址:https://www.cnblogs.com/immortalBlog/p/13181046.html