給定兩個二進位制字串,返回他們的和(用二進位制表示)。
輸入為非空字串且只包含數字 1 和 0。
示例 1:
輸入: a = 「11」, b = 「1」
輸出: 「100」
示例 2:
輸入: a = 「1010」, b = 「1011」
輸出: 「10101」
class
solution
:def
addbinary
(self, a:
str, b:
str)
->
str:
len_a =
len(a)
len_b =
len(b)
i = len_a -
1 j = len_b -
1
carry =
0
l =# 兩個二進位制數 都還沒遍歷完
while i >=
0and j >=0:
ifint
(a[i])+
int(b[j]
)+ carry ==0:
0)elif
int(a[i])+
int(b[j]
)+ carry ==1:
1)carry =
0elif
int(a[i])+
int(b[j]
)+ carry ==2:
0)carry =
1else:1
) carry =
1
i -=
1 j -=
1# a 被遍歷完
if i <0:
while j >=0:
ifint
(b[j]
)+ carry ==0:
0)elif
int(b[j]
)+ carry ==1:
1)carry =
0else:0
) carry =
1 j -=
1# b被遍歷完
else
:while i >=0:
ifint
(a[i]
)+ carry ==0:
0)elif
int(a[i]
)+ carry ==1:
1)carry =
0else:0
) carry =
1 i -=
1# 當最後還有進製時 +1
if carry ==1:
1)# 反轉 使二進位制和為正確順序
l.reverse(
) result =
""for i in
range
(len
(l))
: result +=
str(l[i]
)return result
class
solution
:def
addbinary
(self, a:
str, b:
str)
->
str:
len_a =
len(a)
len_b =
len(b)
i = len_a -
1 j = len_b -
1
carry =
0
result =
""while i >=
0or j >=0:
if i >=0:
p =int(a[i]
)else
: p =
0if j >=0:
q =int(b[j]
)else
: q =
0
temp = p + q + carry
result =
str(temp %2)
+ result
carry = temp //
2
i -=
1 j -=
1if carry ==1:
result =
"1"+ result
return result
class
solution
:def
addbinary
(self, a:
str, b:
str)
->
str:
num =
int(a,2)
+int
(b,2
)
result =
bin(num)
return result[2:
]
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補成長度相等的兩個字串,即比較兩個字串的長度,長度較小的補0 2.準備乙個變數,用來表示當前的進製值,初始值為0 3.遍歷兩個字串,計算當前索引位置兩個字元和進製累加後的結果 4.第3步計算得到的結果對2取餘便是結果字元 實現如下 class solution if le...