首页 » 编程之美 » 正文

[leetcode_67]Add Binary

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

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;
    }
};

发表评论