Add Binary 二進位制求和
給定兩個二進位制字串,返回他們的和(用二進位制表示)。
輸入為非空字串且只包含數字 1
和 0
。
示例 1:
輸入: a = "11", b = "1" 輸出: "100"
示例 2:
輸入: a = "1010", b = "1011" 輸出: "10101"
思路:思維定式一開始準備用兩個數的異或和與操作做遞迴操作來做兩個二進位制的和,但是給定的輸入是字串,所以做異或或者與操作需要重寫兩個函式並且還有考慮前導0的問題,所以discuss區有一個碉堡了的方法!!!
通過變數c來累加當前的每一位的和,並且對2取模,作為這一位的輸出,然後把c除以2,因為這道題不限制只能用0,1兩個數字,並且c的值永遠不會超過3,所以這樣可以得到正確的答案,非常巧妙。
參考程式碼:
class Solution {
public:
string addBinary(string a, string b) {
int c = 0, a_index = a.size() - 1, b_index = b.size() - 1;
string res;
while (a_index >= 0 || b_index >= 0 || c == 1) {
c += a_index >= 0 ? a[a_index--]-'0' : 0;
c += b_index >= 0 ? b[b_index--]-'0' : 0;
res=(char(c % 2 + '0'))+res;
c /= 2;
}
return res;
}
};
相關文章
- LeetCode67. Add Binary(二進位制加法)LeetCode
- 二進位制反碼求和
- Binary Gap 二進位制間距
- 每日一練(39):二進位制求和
- LeetCode刷題之路:67. 二進位制求和LeetCode
- 二進位制與二進位制運算
- mysql關於二進位制日誌binary log的總結MySql
- 進位制詳解:二進位制、八進位制和十六進位制
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- 二進位制
- (二進位制)
- 讓我們一起啃演算法----二進位制求和演算法
- 十進位制——二 (八、十六 )進位制
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- 二進位制、十進位制與十六進位制相互轉化
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- 二進位制轉十進位制快速方法
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- Vector 35 Binary Ninja for Mac(反編譯器、二進位制分析平臺)Mac編譯
- 什麼是二進位制?二進位制如何轉換?
- Cocoapods 二進位制
- 04 二進位制
- leetcode -- 二進位制LeetCode
- JavaScript十進位制轉換為二進位制JavaScript
- 十進位制轉二進位制推導(草稿)
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- 反編譯器和二進位制分析平臺:Vector 35 Binary Ninja for mac編譯Mac
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回
- Leetcode 67 Add BinaryLeetCode
- 進位制與二進位制及相關轉換
- 二進位制陣列陣列
- 二進位制或序列
- 3416:【例72.1】 二進位制轉化為十進位制