LeetCode 67:Add Binary

Given two binary strings, return their sum (also a binary string).

For example,
a = "11"
b = "1"
Return "100".

给定两个二进制字符串,返回他们的和(也用二进制表示)

例如a = 11,b = 1,应当返回 100


为什么这道题写得这么丑,因为我用了大量的复制粘贴,然后懒得改了。。。←_←不过没想到在字符串中插数字这么麻烦,还得先把数字转换成字符串然后再插入。。。

    class Solution {
    public:
        string addBinary(string a, string b) {
            int temp=0;
            string ans;
            int aleng=a.length(),bleng=b.length();
            if(a.length()==0&&b.length()==0) return ans;
            if(b.length()>a.length())
                for(int i=0;i<bleng-aleng;i++)
                    a.insert(0,"0");
            else
                for(int i=0;i<aleng-bleng;i++)
                    b.insert(0,"0");
            cout<<"a="<<a<<"\nb="<<b<<endl;
            for(int i=a.length()-1;i>0;i--)
            {
                int it=a[i]-'0'+b[i]-'0'+temp;
                if(it>=2)
                {
                    char c[2];
                    string s;
                    sprintf(c,"%d",it-2);
                    s=c;
                    ans.insert(0,s);
                    temp=1;
                }
                else
                {
                    char c[2];
                    string s;
                    sprintf(c,"%d",it);
                    s=c;
                    ans.insert(0,s);
                    temp=0;
                }
            }
            int it=a[0]-'0'+b[0]-'0'+temp;
            if(it>=2)
            {
                char c[2];
                string s;
                sprintf(c,"%d",it-2);
                s=c;
                ans.insert(0,s);
                ans.insert(0,"1");
            }
            else
            {
                char c[2];
                string s;
                sprintf(c,"%d",it);
                s=c;
                ans.insert(0,s);
            }
            return ans;
        }
    };




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值