zoukankan      html  css  js  c++  java
  • 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;
            }
        }
    };
  • 相关阅读:
    anaconda的一些命令
    ffmpeg播放RTSP的一点优化
    CUDA JPEG编码
    获取CPU和内存的使用率
    《OpenCL编程指南》之 与Direct3D互操作
    OpenGL全景视频
    win32调用系统颜色对话框
    [转]RGB数据保存为BMP图片
    NVML查询显卡信息
    ffmpeg nvenc编码
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4930161.html
Copyright © 2011-2022 走看看