給你兩個二進位制字串,返回它們的和(用二進位制表示)。
輸入為 非空 字串且只包含數字 1 和 0。
示例 1:
輸入: a = 「11」, b = 「1」
輸出: 「100」
示例 2:
輸入: a = 「1010」, b = 「1011」
輸出: 「10101」
每個字串僅由字元 『0』 或 『1』 組成。
1 <= a.length, b.length <= 10^4
字串如果不是 「0」 ,就都不含前導零。
#最直觀的思路
設flag為進製標誌,若有進製則flag=1,反之則為0
隨後在while裡倒序遍歷兩個字串
while裡面前兩句是判斷一下字串是否已遍歷完畢,如果遍歷完畢,則直接賦予個0值
隨後用兩個值相加並且加上flag值
如果大於等於2,則代表有進製,將c進行取餘操作,並且將進製符置為1
隨後將c值插入到ans的首位
迴圈此過程直到兩個字串都遍歷完畢
最後判斷flag是否等於1,等於1的話則需要在首位補乙個1
class solution:
def addbinary(self, a: str, b: str) -> str:
flag = 0
i = 0
ans =
while len(a)-1-i >=0 or len(b)-1-i >= 0:
a_value = int(a[len(a)-1-i]
)if len(a)-1-i >= 0 else 0
b_value = int(b[len(b)-1-i]
)if len(b)-1-i >= 0 else 0
# print(a_value, b_value)
c = a_value + b_value + flag
if c >= 2:
c = c%2
flag = 1
else:
flag = 0
ans.insert(0, c)
i += 1
if flag == 1:
ans.insert(0, 1)
ans =
''.join(
'%s' %id for
idin ans)
return ans
#超簡潔的方法
利用python中的2進製操作
直接進行2進製相加
class solution:
def addbinary(self, a: str, b: str) -> str:
return
''.format(int(a, 2) + int(b, 2))
LeetCode刷題筆記67
題目 二進位制求和。給定兩個二進位制字串,返回他們的和 用二進位制表示 輸入為非空字串且只包含數字 1 和 0。示例 1 輸入 a 11 b 1 輸出 100 示例 2 輸入 a 1010 b 1011 輸出 10101 我的答案 思路 由於最終長度不確定,且需要一位一位的計算更改,所以使用了str...
Evan的LeetCode刷題之路
二 資料庫 以此記錄本人的leetcode刷題之路。題目內容均 於leetcode 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。示例 給定 nums 2...
leetcode刷題之路38 報數
報數序列是乙個整數序列,按照其中的整數的順序進行報數,得到下乙個數。其前五項如下 1.1 2.11 3.21 4.1211 5.111221 1 被讀作 one 1 乙個一 即 11。11 被讀作 two 1s 兩個一 即 21。21 被讀作 one 2 one 1 乙個二 乙個一 即 1211。給...