#408 Add Binary

本文介绍了一种解决二进制字符串相加问题的方法。通过将二进制加法规则应用于字符串操作,实现两个二进制数的相加并返回结果。

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

题目描述:

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

Example

a = 11

b = 1

Return 100

题目思路:

我这里把binary加法和普通的加法准则一样处理,只不过换成了二进制,其实没什么区别。

Mycode(AC = 23ms):

class Solution {
public:
    /**
     * @param a a number
     * @param b a number
     * @return the result
     */
    string addBinary(string& a, string& b) {
        // Write your code here
        string ans = "";
        int carry = 0, idx_a = a.length() - 1, idx_b = b.length() - 1;
        
        while (idx_a >= 0 && idx_b >= 0) {
            int digit_a = int(a[idx_a--]) - int('0');
            int digit_b = int(b[idx_b--]) - int('0');
            
            ans = to_string((digit_a + digit_b + carry) % 2) + ans;
            carry = (digit_a + digit_b + carry) / 2;
        }
        
        while (idx_a >= 0) {
            int digit_a = int(a[idx_a--]) - int('0');
            ans = to_string((digit_a + carry) % 2) + ans;
            carry = (digit_a + carry) / 2;
        }
        
        while (idx_b >= 0) {
            int digit_b = int(b[idx_b--]) - int('0');
            ans = to_string((digit_b + carry) % 2) + ans;
            carry = (digit_b + carry) / 2;
        }
        
        if (carry > 0) {
            ans = to_string(carry) + ans;
        }
        
        return ans;
    }
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值