Add Binary

    xiaoxiao2021-03-25  59

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

    For example, a = "11" b = "1" Return "100".

    class Solution { public: string addBinary(string a, string b) { string str; int c = 0, i = 0, j = 0; for(; i<a.size() && j<b.size(); ++i, ++j){ int k = a[a.size() - 1 - i] - 48 + b[b.size() - 1 - j] - 48 + c; str += to_string(k%2); c = (k >= 2); } while (j < b.size()){ int k = b[b.size() - 1 - j] - 48 + c; str += to_string(k%2); c = (k >= 2); ++j; } while (i < a.size()){ int k = a[a.size() - 1 - i] - 48 + c; str += to_string(k%2); c = (k >= 2); ++i; } if (c) str += "1"; return string(str.rbegin(), str.rend()); } }; class Solution(object): def addBinary(self, a, b): """ :type a: str :type b: str :rtype: str """ return bin(int(a, 2) + int(b, 2))[2:] string addBinary(string a, string b) { string result = ""; int apos = a.size() - 1; int bpos = b.size() - 1; int adigit, bdigit, carry = 0; while (apos >= 0 || bpos >= 0 || carry == 1) { adigit = bdigit = 0; if (apos >= 0) adigit = a[apos--] == '1'; if (bpos >= 0) bdigit = b[bpos--] == '1'; // Another way: the digit is 1 if adigit + bdigit + carry == 1 or == 3, but I noticed that // XOR is more concise: result = static_cast<char>(adigit ^ bdigit ^ carry + '0') + result; carry = adigit + bdigit + carry >= 2; } return result; }
    转载请注明原文地址: https://ju.6miu.com/read-33950.html

    最新回复(0)