67. 二進制求和

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

輸入為非空字符串且只包含數(shù)字 1 和 0。

示例 1:

輸入: a = "11", b = "1"
輸出: "100"
示例 2:

輸入: a = "1010", b = "1011"
輸出: "10101"

九章算法的解析

class Solution {
public:
    string addBinary(string a, string b) {
        string result;
        const size_t n = a.size() > b.size() ? a.size() : b.size();
        const int lena=a.size();//1010
        const int lenb=b.size();//1011
        reverse(a.begin(), a.end());//翻轉是為了使得先計算低位的數(shù)
        reverse(b.begin(), b.end());
        int carry = 0;
        for (size_t i = 0; i < n; i++) {
            const int ai = i < lena ? a[i] - '0' : 0;
            const int bi = i < lenb ? b[i] - '0' : 0;
            const int val = (ai + bi + carry) % 2;
            carry = (ai + bi + carry) / 2;
            result.insert(result.begin(), val + '0');//每次插入的是begin()位,
//而讀數(shù)的習慣是從end()到begin()的,比如begin是十位,則end是個位
        }
        if (carry == 1) {
            result.insert(result.begin(), '1');
        }
        return result;
    }
};
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 題目 給定兩個二進制字符串,返回他們的和(用二進制表示)。 輸入為非空字符串且只包含數(shù)字 1 和 0。 示例 1:...
    碼蹄疾閱讀 859評論 0 1
  • 給定兩個二進制字符串,返回他們的和(用二進制表示)。 輸入為非空字符串且只包含數(shù)字 1 和 0。 示例 1: 輸入...
    DAFFE閱讀 395評論 0 0
  • 內容 給定兩個二進制字符串,返回他們的和(用二進制表示)。 輸入為非空字符串且只包含數(shù)字 1 和 0。 示例 1:...
    吃飯用盤裝閱讀 243評論 0 0
  • 給定兩個二進制字符串,返回他們的和(用二進制表示)。輸入為非空字符串且只包含數(shù)字 1 和 0。 示例 1: 示例 ...
    vbuer閱讀 699評論 0 1

友情鏈接更多精彩內容