美文网首页算法学习
算法题--两个二进制数相加

算法题--两个二进制数相加

作者: 岁月如歌2020 | 来源:发表于2020-04-18 17:30 被阅读0次
image.png

0. 链接

题目链接

1. 题目

Given two binary strings, return their sum (also a binary string).

The input strings are both non-empty and contains only characters 1 or 0.

Example 1:

Input: a = "11", b = "1"
Output: "100"

Example 2:

Input: a = "1010", b = "1011"
Output: "10101"

2. 思路1:从右往左逐个相加,考虑位数不等,考虑进位

3. 代码

# coding:utf8


class Solution:
    def addBinary(self, a: str, b: str) -> str:
        results = list()
        extra = 0
        i = len(a) - 1
        j = len(b) - 1
        while i >= 0 or j >= 0:
            int_a = int(a[i]) if i >= 0 else 0
            int_b = int(b[j]) if j >= 0 else 0

            i -= 1
            j -= 1

            result = int_a + int_b + extra
            if result >= 2:
                result -= 2
                extra = 1
            else:
                extra = 0

            results.insert(0, str(result))

        if extra > 0:
            results.insert(0, str(extra))

        return ''.join(results)


solution = Solution()
print(solution.addBinary('11', '1'))
print(solution.addBinary('1010', '1011'))


输出结果

100
10101

4. 结果

image.png

相关文章

网友评论

    本文标题:算法题--两个二进制数相加

    本文链接:https://www.haomeiwen.com/subject/orzivhtx.html