LeetCode刷題之路 67 二進位制求和

2021-10-13 15:23:10 字數 1403 閱讀 1787

給你兩個二進位制字串,返回它們的和(用二進位制表示)。

輸入為 非空 字串且只包含數字 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。給...