leetcode 67 二進位制求和

2021-10-10 02:19:37 字數 1605 閱讀 3813

還是老規矩首先判斷空集

方法為先將兩個集合的數值相加

然後求倒序,為了防止函式取值時不夠,要在倒敘後的數列末尾中加乙個0項,在最後再去除

進入判斷語句,如果最後一項大於二,則這一項減2,同時前一項加2

最後遍歷出列表中每乙個值為value

class

solution

:def

addbinary

(self, a:

str, b:

str)

->

str:

if a =='':

return a

if b =='':

return b

a_b =

list

(str

(int

(a)+

int(b)))

a_b.reverse(

)'0'

)for i in

range(0

,len

(a_b)):

ifint

(a_b[i]

)>=2:

a_b[i]

=str

(int

(a_b[i])-

2)a_b[i+1]

=str

(int

(a_b[i+1]

)+1)

a_b.reverse(

) value =

''if a_b[0]

=='0'

:for i in a_b[1:

len(a_b)]:

value += i

else

:for i in a_b:

value += i

return value

既然可以用迴圈解決問題,那麼也可以用遞迴解決問題

基線條件為判斷到最後一位

遞迴條件分為三種:

1、a,b都是0,直接在後面新增0

2、a,b有一方是1,直接在後面新增1

3、雙方都是1,在後面新增0,同時前一位加一

class

solution

:def

addbinary

(self, a:

str, b:

str)

->

str:

if a =='':

return b

if b =='':

return a

if a[-1

]=='0'and b[-1

]=='0':

return self.addbinary(a[:-

1],b[:-1

])+'0'

elif a[-1

]=='1'and b[-1

]=='1':

return self.addbinary(self.addbinary(a[:-

1],b[:-1

]),'1')+

'0'else

:return self.addbinary(a[:-

1],b[:-1

])+'1'

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...