Add Binary 算法详解

来源:互联网 发布:网络终端是什么意思 编辑:程序博客网 时间:2024/06/14 06:02

算法题目:Given two binary strings, return their sum (also a binary string).

For example,
a = “11”
b = “1”
Return “100”

大致意思:二进制字符串的加法

解题思路:可以用循环与递归来求解

循环版本:

    string addBinary(string a, string b) {        int c=0;        int len1=a.size();        int len2=b.size();        string ret(max(len1,len2),'0');        int i=a.size()-1;        int j=b.size()-1;        int k=ret.size()-1;        int m=0;                while(k>=0)        {            m+=c;            if(i>=0)            {                m+=(a[i]-'0');            }            if(j>=0)            {                m+=(b[j]-'0');            }            c=m/2;            ret[k]+=m%2;            m=0;            i--;            j--;            k--;        }        return c>0?string(1,c+'0')+ret:ret;    }

递归版本:

    string addBinaryCore(string a,string b,int c)    {        if(a.size()==0&&b.size()==0&&c==0)return "";        string substra("");        string substrb("");        int ca=0;        int cb=0;        if(a.size()!=0)        {           substra=a.substr(0,a.size()-1);            ca=a[a.size()-1]-'0';        }        if(b.size()!=0)        {            substrb=b.substr(0,b.size()-1);            cb=b[b.size()-1]-'0';        }        int m=(ca+cb+c)%2;        c=(ca+cb+c)/2;        return addBinaryCore(substra,substrb,c)+string(1,m+'0');    }    string addBinary(string a, string b) {        return addBinaryCore(a,b,0);    }
0 0
原创粉丝点击