Add Binary

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

The input strings are both non-empty and contains only characters 1 or 0.

Example 1:

Input: a = "11", b = "1"
Output: "100"

Example 2:

Input: a = "1010", b = "1011"

Output: "10101"

class Solution {
public:
    string addBinary(string a, string b) 
    {
        if(a == "0" || a.size()==0)  
            return b;  
        if(b == "0" || b.size() == 0)  
            return a;     
        string result;   
        int i = a.size() - 1, j = b.size() - 1;  
        int aa, bb, rem, carry;  
        aa = bb = rem = carry = 0;    
        while((i >= 0) || (j >= 0))  
        {  
            aa = i < 0 ? 0 : a[i] - '0';  
            bb = j < 0 ? 0 : b[j] - '0';  
            rem = (aa + bb + carry)%2;  
            carry = (aa + bb + carry)/2;  
            result.push_back(rem + '0');  
            //将数值转换为字符串
            i--;  
            j--;  
        }  
        if(carry == 1)  
            result.push_back('1');  
        reverse(result.begin(), result.end());  
        return result;  
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值