leetcode Add Binary

本文介绍了一种解决二进制加法问题的算法实现,通过字符串操作完成两个二进制数的加法运算,包括处理进位逻辑,并提供了一个完整的C++代码示例。

此题为二进制加法,发放很自然,将两个字符串以尾部对齐,从后往前依次相加,注意进位。

难点在于对字符串的操作,string为C++中的字符串类,添加单个字符或字符串均可直接利用‘+’来进行连接

且注意char转化为int方式,即直接加减 ‘0’ 即可

代码

class Solution {
public:
    string addBinary(string a, string b) {
        
        string result;
        int alen = a.length();
        int blen = b.length();
        
        if(alen==0)
            return b;
        if(blen==0)
            return a;
        
        int i = alen - 1;
        int j = blen - 1;
        
        int carry = 0;
        while(i>=0&&j>=0)
        {
            int digit = (a[i]-'0'+b[j]-'0'+carry)%2;
            carry = (a[i]-'0'+b[j]-'0'+carry)/2;
            result += char(digit + '0');
            i--;
            j--;
        }
        
        while(i>=0)
        {
            int digit = (a[i]-'0'+ carry)%2;
            carry = (a[i]-'0'+ carry)/2;
            result += char(digit + '0');
            i--;
        }
        
        while(j>=0)
        {
            int digit = (b[j]-'0'+ carry)%2;
            carry = (b[j]-'0'+ carry)/2;
            result += char(digit + '0');
            j--;
            
        }
        
        if(carry>0)
            result += char(carry + '0');
        
        reverse(result.begin(), result.end());
        
        return result;
    }
};


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值