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;
            }
        }
    };
  • 相关阅读:
    C语言之逻辑运算符
    iOS:实现图片的无限轮播---之使用第三方库SDCycleScrollView
    Mac 环境下svn服务器的配置
    ld: warning: directory not found for option 去掉警告的方法
    Mac怎么设置wifi热点
    如何获取AppStore软件安装包的路径
    四种卸载Mac软件的方法
    UIAlertController
    uiview关联xib
    OC学习篇之---文件的操作
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4930161.html
Copyright © 2011-2022 走看看