AddBinary

又是一个很简单的题目,比较每个末尾字符串是0还是1,有没有进位


看来真是我太缺少挑战难题的勇气了!


class Solution {
public:

    
    string addBinary(string a, string b) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        
        int lena=a.length(),lenb=b.length();
        if(lena==0)return b;
        if(lenb==0)return a;
        
        if(lena<lenb)
        {
            string tmp=a;
            a=b;
            b=tmp;
            
            int tlen=lena;
            lena=lenb;
            lenb=tlen;
        }
        
        int add=0;
        string r="";
        int i=0;
        if(lena>=lenb)
        {
            for(;i<lenb;i++)
            {
                if(add==0)
                {
                    char ac=a[lena-1-i];
                    char bc=b[lenb-1-i];
                    if(ac=='1' && bc=='1')
                    {
                        add=1;
                        r='0'+r;
                    }
                    else if(ac=='1' || bc=='1')
                    {
                        r='1'+r;
                    }
                    else
                    {
                        r='0'+r;
                    }
                }
                else
                {
                    char ac=a[lena-1-i];
                    char bc=b[lenb-1-i];
                    if(ac=='1' && bc=='1')
                    {
                        add=1;
                        r='1'+r;
                    }
                    else if(ac=='1' || bc=='1')
                    {
                        add=1;
                        r='0'+r;
                    }
                    else
                    {
                        add=0;
                        r='1'+r;
                    }
                }
            }
        }
        for(;i<lena;i++)
        {
            char ac=a[lena-1-i];
            if(add==1 && ac=='1')
            {
                add=1;r='0'+r;
            }
            else if(add==1 || ac=='1')
            {add=0;r='1'+r;}
            else
            {
                r='0'+r;
            }
        }
        if(add==1)
        r='1'+r;
        return r;
    }
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值