給定兩個二進位制字串,返回他們的和(用二進位制表示)。
輸入為非空字串且只包含數字 1 和 0。
示例 1:
輸入: a = 「11」, b = 「1」
輸出: 「100」
示例 2:
輸入: a = 「1010」, b = 「1011」
輸出: 「10101」
比較直觀,先把兩個字串補到一樣長,然後模擬進製即可.
// string方法 s.length()獲取長度
// 注意char轉int的方法:減'0'
#include
class
solution
else
if(a[j]
-'0'
+b[j]
-'0'
+res==3)
else
if(a[j]
-'0'
+b[j]
-'0'
+res==1)
else}if
(res ==
1) c =
"1"+c;
return c;}}
;
執行用時 :8 ms, 在所有 cpp 提交中擊敗了53.99%的使用者
記憶體消耗 :9.5 mb, 在所有 cpp 提交中擊敗了5.07%的使用者
記憶體消耗比較慘烈……讓我來看一看有沒有什麼好的題解。
轉十進位製做的,大數肯定會溢位吧。
用內建函式的,不想說了。。。
看到乙個比較巧妙的是用異或(by august_en):
class
solution
if(la - lb >0)
b.insert(0
, la - lb,
'0')
;int pre =
0, cur =0;
string res;
for(
int i = la -
1; i >=
0; i--)if
(pre)
// 最高位的進製單獨處理
res.
insert(0
,1, pre +
'0')
;return res;}}
;
思路其實是一樣的。
用insert會節省比較多記憶體吧。
二進位制求和 LeetCode
從後向前遍歷每乙個字串的每乙個字元,直到走完所有位,比如兩個字串分別是a 101 和 b 11 則第一次取a的最後一位1和b的最後一位1,初始沒有進製,則進製為0,相加為2,變為0,進一位,總結起來就是 每個字串各取一位相加,然後再加上進製 如果有為1,沒有為0 得到的值設為x,x 2即為新的進製,...
LeetCode 二進位制求和
二進位制求和 簡單 2020年4月28日 給你兩個二進位制字串,返回它們的和 用二進位制表示 輸入為 非空 字串且只包含數字 1 和 0。示例 1 輸入 a 11 b 1 輸出 100 示例 2 輸入 a 1010 b 1011 輸出 10101 每個字串僅由字元 0 或 1 組成。1 a.leng...
leetCode 二進位制求和
題目描述 給你兩個二進位制字串,返回它們的和 用二進位制表示 輸入為空字串且只包含數字1和0。示例 1 輸入 a 11 b 1 輸出 100 示例 2 輸入 a 1010 b 1011 輸出 10101 每個字串僅由字元 0 或 1 組成。1 a.length,b.length 10 4 字串如果不...