LeetCode刷題之路:67. 二進位制求和
給你兩個二進位制字串,返回它們的和(用二進位制表示)。
輸入為 非空 字串且只包含數字 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 id in ans)
return ans
#超簡潔的方法
利用python中的2進位制操作
直接進行2進位制相加
class Solution:
def addBinary(self, a: str, b: str) -> str:
return '{:b}'.format(int(a, 2) + int(b, 2))
相關文章
- Add Binary 二進位制求和
- 二進位制反碼求和
- leetcode -- 二進位制LeetCode
- 每日一練(39):二進位制求和
- LeetCode-190-顛倒二進位制位LeetCode
- LeetCode67. Add Binary(二進位制加法)LeetCode
- 二進位制與二進位制運算
- 進位制詳解:二進位制、八進位制和十六進位制
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- 二進位制
- (二進位制)
- 讓我們一起啃演算法----二進位制求和演算法
- 十進位制——二 (八、十六 )進位制
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- 【刷演算法】二進位制中1的個數演算法
- 二進位制、十進位制與十六進位制相互轉化
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- 二進位制轉十進位制快速方法
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- 什麼是二進位制?二進位制如何轉換?
- #leetcode刷題之路1-兩數之和LeetCode
- 用 Rust 刷 leetcode 第二題RustLeetCode
- Cocoapods 二進位制
- 04 二進位制
- JavaScript十進位制轉換為二進位制JavaScript
- 十進位制轉二進位制推導(草稿)
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- 二進位制方式解決 power 問題
- 負數的二進位制數問題
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回
- 進位制與二進位制及相關轉換
- 二進位制陣列陣列
- 二進位制或序列