還是老規矩首先判斷空集
方法為先將兩個集合的數值相加
然後求倒序,為了防止函式取值時不夠,要在倒敘後的數列末尾中加乙個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...