67. Add Binary

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) {
        if (a.size() < b.size()) swap(a, b);
        int n = a.size();
        int al = a.length();
        int bl = b.length();
        bool mark = 0;
        vector<int> x(al);
        vector<int> y(al);
        string s = "";
        for (int i = 0; i < al; ++i) x[i] = (a[i] - '0');
        for (int i = 0; i < bl; ++i) y[i + al - bl] = (b[i] - '0');
        for (int i = n - 1; i >= 0; --i) {
            int z = x[i] + y[i];
            x[i] = z % 2;
            s = char(x[i] + '0') + s;
            if(i > 0) x[i - 1] += z / 2; 
            else if (z / 2) {
                s = "1" + s;
            }
        }
        return s;
    }
};

 

posted on 2017-07-20 13:45  Beserious  阅读(114)  评论(0编辑  收藏  举报