[LeetCode] Add Binary

来源:互联网 发布:java考试题库 编辑:程序博客网 时间:2024/05/13 18:32
class Solution {public:    string addBinary(string a, string b) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        int m = a.size();        int n = b.size();                vector<int> va(m);        vector<int> vb(n);        vector<int> vc(max(m, n) + 1);                for (int i = 0; i < m; i++)            va[i] = a[m - 1 - i] - '0';                for (int j = 0; j < n; j++)            vb[j] = b[n - 1 - j] - '0';                int carry = 0;        for (int i = 0; i < min(m, n); i++) {            int sum = va[i] + vb[i] + carry;            vc[i] = sum % 2;            carry = sum / 2;        }                if (m > n) {            for (int i = n; i < m; i++) {                int sum = va[i] + carry;                vc[i] = sum % 2;                carry = sum / 2;            }        } else {            for (int i = m; i < n; i++) {                int sum = vb[i] + carry;                vc[i] = sum % 2;                carry = sum / 2;            }        }                int s = max(m, n);                if (carry) {            vc[s] = carry;            s += carry;        }                string ret = "";                for (int i = 0; i < s; i++) {            ret += vc[s - 1 - i] + '0';        }                return ret;    }};


Small Case: 8ms

Large Case: 16ms


Time: O(n)

Space: O(n)

原创粉丝点击