天天看點

[LeetCode] Add Binary 二進制數相加

Given two binary strings, return their sum (also a binary string).

For example,

a = "11"

b = "1"

Return "100".

二進制數想加,并且儲存在string中,要注意的是如何将string和int之間互相轉換,并且每位相加時,會有進位的可能,會影響之後相加的結果。而且兩個輸入string的長度也可能會不同。這時我們需要建立一個string,它的長度是兩條輸入string中的較大的那個,并且把較短的那個輸入string通過在開頭加字元‘0’來補的較大的那個長度。這時候我們逐個從兩個string的末尾開始取出字元,然後轉為數字,想加,如果大于等于2,則标記進位标志carry,并且給新string加入一個字元‘0’。代碼如下:

解法一:

<a>class Solution {</a>

下面這種寫法又巧妙又簡潔,用了兩個指針分别指向a和b的末尾,然後每次取出一個字元,轉為數字,若無法取出字元則按0處理,然後定義進位carry,初始化為0,将三者加起來,對2取餘即為目前位的數字,對2取商即為目前進位的值,記得最後還要判斷下carry,如果為1的話,要在結果最前面加上一個1,參見代碼如下:

解法二:

參考資料:

<a href="https://discuss.leetcode.com/topic/8981/short-code-by-c" target="_blank">https://discuss.leetcode.com/topic/8981/short-code-by-c</a>

,如需轉載請自行聯系原部落客。

繼續閱讀