LeetCode67 二進位制求和解析

2021-08-30 13:13:43 字數 1169 閱讀 1531

給定兩個二進位制字串,返回他們的和(用二進位制表示)。

輸入為非空字串且只包含數字 1 和 0。

示例1:

輸入: a = "11", b = "1"

輸出: "100"

示例2:

輸入: a = "1010", b = "1011"

輸出: "10101"

這個題的第乙個想法就是把字串直接轉換成二進位制數然後相加,之後再轉換成字串。但是這樣也就沒什麼演算法的意思了,c++中也沒有這樣的簡單實現,但python是有的,所以後面的**中python用了這種簡單的方法,只是字串不能直接轉換成二進位制,而是用int()函式轉換成了十進位制相加,然後用bin()函式將十進位制數轉換為二進位制字串。

接下來說一下c++的實現,c++就老老實實的遍歷字串,利用進製等方法把兩個字串相加,這裡需要注意的是,二進位制高位在字串前面,而低位在字串後面,所以遍歷的時候需要反向遍歷,之後就和之前兩個陣列相加沒什麼區別了,設定乙個進製,遍歷的長度是最長字串長度,如果索引達到短字串最長長度就不再加短字串元素,否則就是兩個字串元素加進制。最後遍歷完之後還有進製就再對新字串前面加個1。

c++源**:

class

solution

c ="";

int la = a.

length()

;int lb = b.

length()

;for

(int i=

0;i(carry ==1)

c =to_string

(carry)

+ c;

return c;}}

;

python3源**:

class

solution

:def

addbinary

(self, a, b)

:"""

:type a: str

:type b: str

:rtype: str

"""c =

int(a,2)

+int

(b,2

) c =

bin(c)

return c[2:

]

Leetcode 67 二進位制求和

給定兩個二進位制字串,返回他們的和 用二進位制表示 輸入為非空字串且只包含數字 1 和 0。示例 1 輸入 a 11 b 1 輸出 100 示例 2 輸入 a 1010 b 1011 輸出 10101 class solution if blen 0 carry sum 2 錯誤的 if sum 2...

leetcode 67 二進位制求和

給定兩個二進位制字串,返回他們的和 用二進位制表示 輸入為非空字串且只包含數字1和0。示例 1 輸入 a 11 b 1 輸出 100 示例 2 輸入 a 1010 b 1011 輸出 10101 新鮮現做 幸福coding class solution object def addbinary se...

leetcode 67 二進位制求和

給定兩個二進位制字串,返回他們的和 用二進位制表示 輸入為非空字串且只包含數字 1 和 0。示例1 輸入 a 11 b 1 輸出 100 示例2 輸入 a 1010 b 1011 輸出 10101 解題思路 老老實實的採用了較為暴力的列舉法來作答,所以 較為複雜,且可讀性較差 class solut...