【LeetCode】67. Add Binary

    xiaoxiao2021-03-25  112

    题目描述

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

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

    解题思路

    大数相加二进制版。 先把两个数从最小位开始相加,最后把较长那个数与carry相加,直到结束。

    AC代码

    class Solution { public: string addBinary(string a, string b) { string ans; int carry = 0; int ai = a.size() - 1, bi = b.size() - 1; for (; ai >= 0 && bi >= 0; --ai, --bi) { int sum = (a[ai] - '0') + (b[bi] - '0') + carry; ans.push_back(sum % 2 + '0'); carry = sum / 2; } string longStr = ai < 0 ? b : a; int startIdx = ai < 0 ? bi : ai; for (; startIdx >= 0; --startIdx) { int sum = (longStr[startIdx] - '0') + carry; ans.push_back(sum % 2 + '0'); carry = sum / 2; } if (carry != 0) ans.push_back(carry + '0'); reverse(ans.begin(), ans.end()); return ans; } };
    转载请注明原文地址: https://ju.6miu.com/read-25458.html

    最新回复(0)