Leetcode 二進位制求和 簡單

2021-10-01 05:29:00 字數 1193 閱讀 8186

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

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