67 二進位制求和 python

2021-10-04 08:02:53 字數 1726 閱讀 3368

給定兩個二進位制字串,返回他們的和(用二進位制表示)。輸入為非空字串且只包含數字 1 和 0。

示例 1:

輸入: a =

"11"

, b =

"1"輸出:

"100"

示例 2:

輸入: a =

"1010"

, b =

"1011"

輸出:"10101"

我實現的是一種直觀但較為笨拙的方法,僅供理解~

題目要求兩個字串表示的二進位制數相加後的結果,結果同樣使用二進位制表示。因為兩個字串不一定等長,而且我們需要從後往前依次計算相加結果。

ac code

class

solution

:def

addbinary

(self, a:

str, b:

str)

->

str:

if a ==

''and b =='':

return

''if a =='':

return b

if b =='':

return a

a, b =

list

(a),

list

(b) diff =

abs(

len(a)

-len

(b))

iflen

(a)>

len(b)

: b =

['0'

]* diff + b

else

: a =

['0'

]* diff + a

a.reverse(

) b.reverse(

) carry =

0 res =

index =

len(a)

for i, j in

zip(a, b)

: number =

int(i)

+int

(j)+ carry

index -=

1if number >

1and index !=0:

carry = number //

2 res.insert(0,

'{}'

.format

(number %2)

)elif number >

1and index ==0:

res.insert(0,

'{}'

.format

(number %2)

) res.insert(0,

'1')

else

: res.insert(0,

'{}'

.format

(number)

) carry =

0return

''.join(res)

67 二進位制求和

一 題意 給定兩個二進位制字串,返回他們的和 用二進位制表示 輸入為非空字串且只包含數字 1 和 0。示例 1 輸入 a 11 b 1 輸出 100 示例 2 輸入 a 1010 b 1011 輸出 10101 二 分析和解答 public string addbinary string a,str...

67 二進位制求和

雖然自己也寫對了,但是 非常不簡潔,還是答案的 簡潔,應該學習下 答案 class solution index 0 找到第乙個不為0的位置 while res index 0 index len index 如果結果為0,就直接返回0 if index len 1 return 0 return ...

67 二進位制求和

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