Add Binary

来源:互联网 发布:马刺 知乎 2017 编辑:程序博客网 时间:2024/04/30 06:30

Leetcode 的一道题,很水,但要一次性在纸上写对还是不容易的,很考验人的细心和对string的熟悉程度。


算法很简单,将两个加数逆置,作二进制加法,得到的结果再逆置,将其返回即可。


以下是代码:


class Solution {public:    string addBinary(string a, string b) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        int c = 0;        int a1,b1,sum;        int i;        string ans = "";        reverse(a.begin(),a.end());        reverse(b.begin(),b.end());        for(i = 0; i < a.size() && i < b.size(); i ++){            a1 = a[i]-'0';            b1 = b[i]-'0';            sum = a1+b1+c;            if(sum >= 2) c = 1;            else c = 0;            sum=sum%2;            //ans.append(char(sum+'0'));            ans += (sum+'0');        }        while(i < a.size()){            a1 = a[i] - '0';            sum = a1 + c;            if(sum >= 2) c = 1;            else c = 0;            sum=sum%2;            ans += (sum+'0');            i ++;        }        while(i < b.size()){            b1 = b[i] - '0';            sum = b1 + c;            if(sum >= 2) c = 1;            else c = 0;            sum=sum%2;            ans += (sum+'0');            i ++;        }        if(c) ans+='1';        reverse(ans.begin(),ans.end());        return ans;    }};