我是靠谱客的博主 大力微笑,最近开发中收集的这篇文章主要介绍(每日一练c++)二进制求和二进制求和,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

二进制求和

给你两个二进制字符串,返回它们的和(用二进制表示)。

输入为 非空 字符串且只包含数字 1 和 0

示例 1:

输入: a = "11", b = "1"
输出: "100"

示例 2:

输入: a = "1010", b = "1011"
输出: "10101"

提示:

  • 每个字符串仅由字符 '0' 或 '1' 组成。
  • 1 <= a.length, b.length <= 10^4
  • 字符串如果不是 "0" ,就都不含前导零。
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
    string addBinary(string a, string b)
    {
        string res;
        int carry = 0;
        int i = a.length() - 1;
        int j = b.length() - 1;
        for (; i >= 0 && j >= 0; i--, j--)
        {
            if (a[i] == '1' && b[j] == '1')
            {
                if (carry > 0)
                {
                    res.push_back('1');
                }
                else
                {
                    res.push_back('0');
                }
                carry = 1;
            }
            else if (a[i] == '0' && b[j] == '0')
            {
                if (carry > 0)
                {
                    res.push_back('1');
                }
                else
                {
                    res.push_back('0');
                }
                carry = 0;
            }
            else
            {
                if (carry > 0)
                {
                    res.push_back('0');
                    carry = 1;
                }
                else
                {
                    res.push_back('1');
                    carry = 0;
                }
            }
        }
        while (i >= 0)
        {
            if (a[i--] == '1')
            {
                if (carry > 0)
                {
                    res.push_back('0');
                    carry = 1;
                }
                else
                {
                    res.push_back('1');
                    carry = 0;
                }
            }
            else
            {
                res.push_back(carry + '0');
                carry = 0;
            }
        }
        while (j >= 0)
        {
            if (b[j--] == '1')
            {
                if (carry > 0)
                {
                    res.push_back('0');
                    carry = 1;
                }
                else
                {
                    res.push_back('1');
                    carry = 0;
                }
            }
            else
            {
                res.push_back(carry + '0');
                carry = 0;
            }
        }
        if (carry > 0)
        {
            res.push_back('1');
        }
        reverse(res.begin(), res.end());
        return res;
    }
};

最后

以上就是大力微笑为你收集整理的(每日一练c++)二进制求和二进制求和的全部内容,希望文章能够帮你解决(每日一练c++)二进制求和二进制求和所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部