給定兩個二進位制字串,返回他們的和(用二進位制表示)。輸入為非空字串且只包含數字 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...