• 67. Add Binary


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

    For example,
    a = "11"
    b = "1"
    Return "100".

    class Solution {
    public:
        string addBinary(string a, string b) {
            int aLen = a.length();
            int bLen = b.length();
            bool carry = false;
            int aPointer = aLen-1;
            int bPointer = bLen-1;
            if(aLen >= bLen){
                while(bPointer >=0)
                {
                    if(!carry){
                        if(a[aPointer] == '0' && b[bPointer] == '0')
                        {
                            a[aPointer] = '0';
                        }
                        else if(a[aPointer] == '1' && b[bPointer] == '1')
                        {
                            a[aPointer] = '0';
                            carry = true;
                        }
                        else
                        {
                            a[aPointer] = '1';
                        }
                    }
                    else
                    {
                        if(a[aPointer] == '0' && b[bPointer] == '0')
                        {
                            a[aPointer] = '1';
                            carry = false;
                        }
                        else if(a[aPointer] == '1' && b[bPointer] == '1')
                        {
                            a[aPointer] = '1';
                        }
                        else
                        {
                            a[aPointer] = '0';
                        }
                    }
                    aPointer--;
                    bPointer--;
                }
                while(aPointer>=0 && carry)
                {
                    if(a[aPointer] == '0')
                    {
                        a[aPointer] = '1';
                        carry = false;
                        break;
                    }
                    a[aPointer]='0';
                    aPointer--;
                }
                if(carry)
                {
                    a = "1" + a;
                }
                return a;
            }
            else{
                while(aPointer >=0)
                {
                    if(!carry){
                        if(a[aPointer] == '0' && b[bPointer] == '0')
                        {
                            b[bPointer] = '0';
                        }
                        else if(a[aPointer] == '1' && b[bPointer] == '1')
                        {
                            b[bPointer] = '0';
                            carry = true;
                        }
                        else
                        {
                            b[bPointer] = '1';
                        }
                    }
                    else
                    {
                        if(a[aPointer] == '0' && b[bPointer] == '0')
                        {
                            b[bPointer] = '1';
                            carry = false;
                        }
                        else if(a[aPointer] == '1' && b[bPointer] == '1')
                        {
                            b[bPointer] = '1';
                        }
                        else
                        {
                            b[bPointer] = '0';
                        }
                    }
                    aPointer--;
                    bPointer--;
                }
                while(bPointer>=0 && carry)
                {
                    if(b[bPointer] == '0')
                    {
                        b[bPointer] = '1';
                        carry = false;
                        break;
                    }
                    b[bPointer] = '0';
                    bPointer--;
                }
                if(carry)
                {
                    b = "1" + b;
                }
                return b;
            }
        }
    };
  • 相关阅读:
    [cf 947E] Perpetual Subtraction
    loj3120. 「CTS2019 | CTSC2019」珍珠
    loj「LibreOJ NOI Round #2」不等关系
    loj6395. 「THUPC2018」城市地铁规划 / City
    loj2553. 「CTSC2018」暴力写挂
    loj6270. 数据结构板子题
    loj6358. 前夕
    loj6677. EntropyIncreaser 与菱形计数
    fiddler模拟接口响应数据
    Fiddler请求详解/autoResponseder重定向
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4930161.html
Copyright © 2020-2023  润新知