[leetcode_67]Add Binary

90个题了,真心不容易。
两个字符串的二进制加法。找一个int来存储进位。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Solution {
public:
    string addBinary(string a, string b) {
        string ans = "";
        int lenMin = a.length() < b.length()?a.length():b.length();
        int inbit = 0;
        for(int i = 0;i < lenMin;i++) {
            int aVal = a[a.length()-1-i] - '0';
            int bVal = b[b.length()-1-i] - '0';
            int sum = inbit + aVal + bVal;
            inbit = sum / 2;
            ans.push_back(sum%2 + '0');
        }
        if(a.length() > b.length()) {
            for(int i = lenMin;i < a.length();i++) {
                int Val = a[a.length()-1-i] - '0' + inbit;
                inbit = Val / 2;
                ans.push_back(Val%2 + '0');
            }
        }
        else {
            for(int i = lenMin;i < b.length();i++) {
                int Val = b[b.length()-1-i] - '0' + inbit;
                inbit = Val / 2;
                ans.push_back(Val%2 + '0');
            }
        }
        if(inbit != 0) {
            ans.push_back(inbit + '0');
        }
        string ansr(ans.rbegin(),ans.rend());
        return ansr;
    }
};
Licensed under CC BY-NC-SA 4.0