LeetCode67 Add Binary 解题报告

本文介绍了一种解决二进制字符串相加问题的方法。通过使用字符串相加的方式,从两个字符串的末尾开始逐位相加,并用一个变量保存进位值。采用vector保存每位的值,最终得到结果字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

For example,

a = "11"
b = "1"
Return "100".

题意是给两个二进制字符串进行相加,返回相加的值,类型为string。

这类用字符串来进行求和操作,主要是要字符串相加的时候,要先从两个字符串末尾开始,然后用一个值来保存进位值,就能比较快速的求解。简单的方法就是用一个数组或者vector来保存每个位的值,长度必然为输入字符串中较大的长度加一(考虑进位),然后逆序转换位字符串即可。

string addBinary(string a, string b)
{
    int len_a=a.size();
    int len_b=b.size();
    int len_re=len_a>len_b?(len_a+1):(len_b+1);

    int fur=0;
    len_a--;
    len_b--;

    vector<int> r(len_re,0);//保存每一位的值
    for(int i=0;i<len_re;i++)
    {
        int t1=0;
        if(i<=len_a)
        {
            t1=a[len_a-i]-'0';
        }
        int t2=0;
        if(i<=len_b)
        {
            t2=b[len_b-i]-'0';
        }
        int t=t1+t2+fur;
        //t=0,1,2,3
        r[i]=(t%2);
        if(t>1)//进位
            fur=1;
        else//不进位也要考虑,否则fur一直为1
            fur=0;
    }
    string re;
    int start=r.size()-1;
    if(r[start]==0)//只有最后一位可能会出现0的情况
    {
        start--;
    }
    for(int i=start;i>=0;i--)
    {
        re+=static_cast<char>(r[i]+'0');
    }
    return re;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值