【LeetCode每日一题】2020.6.23 67. 二进制求和

67. 二进制求和

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

输入为 非空 字符串且只包含数字 10

示例:

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

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

分析:

​ 最简单的做法是将a、b两个字符串转为十进制计算后转为二进制,再转为字符串。

​ 如果题目提高难度,例如面试题 17.01. 不用加号的加法,明确表示不可以运用算数运算符。就可以利用位运算,其实这也是半加器的原理。

代码(Python):

class Solution:
    def addBinary(self, a, b) -> str:
        x, y = int(a, 2), int(b, 2)
        while y:
            answer = x ^ y
            carry = (x & y) << 1
            x, y = answer, carry
        return bin(x)[2:]

猜你喜欢

转载自www.cnblogs.com/enmac/p/13180869.html
今日推荐