67. Add Binary

原创 2017年01月02日 22:49:40

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 c = 0, quo = 0, i, j;
        string ans;
        for(i = a.length() - 1, j = b.length() - 1; i >= 0 || j >= 0; --i, --j){
            if(i >= 0 && j >= 0){
                quo = (a[i] - '0' + b[j] - '0' + c) % 2;
                c = (a[i] - '0' + b[j] - '0' + c) / 2;
            } else if(i >= 0){
                quo = (a[i] - '0' + c) % 2;
                c = (a[i] - '0' + c) / 2;
            } else if(j >= 0){
                quo = (b[j] - '0' + c) % 2;
                c = (b[j] - '0' + c) / 2;
            }
            ans.insert(ans.begin(), (quo + '0'));
        }

        if(c != 0)
            ans.insert(ans.begin(), (c + '0'));
        return ans;
    }
};

二刷

class Solution {
public:
    string addBinary(string a, string b) {
        string res;
        int i, j, carry = 0;
        for(i = a.length() - 1, j = b.length() - 1; i >= 0 && j >= 0; --i, --j){
            res.push_back((a[i] - '0' + b[j] - '0' + carry) % 2 + '0');
            carry = (a[i] - '0' + b[j] - '0' + carry) / 2;
        }
        while(i >= 0){
            res.push_back((a[i] - '0' + carry) % 2 + '0');
            carry = (a[i] - '0' + carry) / 2;
            --i;
        }
        while(j >= 0){
            res.push_back((b[j] - '0' + carry) % 2 + '0');
            carry = (b[j] - '0' + carry) /  2;
            --j;
        }
        if(carry) res.push_back('1');

        string rev;
        int len = res.length();
        for(i = len - 1; i >= 0; --i){
            rev.push_back(res[i]);
        }
        return rev;
    }
};

【LeetCode-面试算法经典-Java实现】【067-Add Binary(二进制加法)】

【067-Add Binary(二进制加法)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given two binary strings, return their ...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月02日 06:09
  • 3730

Add Binary(二进制字符串相加)

Given two binary strings, return their sum (also a binary string). For example, a = "11" b = "1...
  • slowdreamer
  • slowdreamer
  • 2015年05月19日 16:44
  • 276

LeetCode算法题目之Add Binary 我的思路

题目如下:点击打开链接 Given two binary strings, return their sum (also a binary string). For example, a = "1...
  • WALLEZhe
  • WALLEZhe
  • 2015年09月16日 22:29
  • 499

LeetCode 67 Add Binary(二进制相加)(*)

翻译给定两个二进制字符串,返回它们的和(也是二进制字符串)。例如, a = "11" b = "1" 返回 "100".原文Given two binary strings, return their...
  • NoMasp
  • NoMasp
  • 2016年02月02日 13:49
  • 2079

LeetCode Add Binary 高精度二进制加法

就是简化版的高精度加法,但是,其实也不是简化了。 因为有一个特殊情况:如果进位是1,那么剩下一个数的时候后面的为都是1,那么1+1要进位,就要一直进位进到最高位+1了。 如11110101,到第五位...
  • kenden23
  • kenden23
  • 2013年11月18日 18:30
  • 1578

[Erang]binary转换的一些技巧

erlang提供了binary_to_term,把一个二进制数据转为原始的erlang数据。但是,这个函数也有副作用。如果直接将对端传来的数据做一次 binary_to_term,就可能会导致VM c...
  • abv123456789
  • abv123456789
  • 2015年06月04日 14:17
  • 1472

读取application/binary 是什么类型的文件

/**  * File:ReadWriteBF.java  * -------------------------  * Read from a large txt file ,have 100...
  • u012089657
  • u012089657
  • 2015年09月16日 15:06
  • 1253

开启binary log功能

MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库。用于slave端执行增删改,保持与mas...
  • nanyanglu
  • nanyanglu
  • 2016年09月28日 21:52
  • 1273

iOS应用发布Invalid Binary问题解决方案

上次发布一淘HD应用,头一天发布,第二天就上线,私下还在想,是不是苹果采用什么优化的解决方案了,导致审核速度加快了。这两天发布新版,一直碰到Invaild Binary问题,才想明白,原来大家都被这个...
  • ugg
  • ugg
  • 2014年05月04日 22:28
  • 7220

数据结构之Binary Heap(二叉堆)

数据结构之Binary Heap(二叉堆)1.Binary Heap的定义 二叉堆是一种特殊的堆,二叉堆是完全二元树(二叉树)或者是近似完全二元树(二叉树)。二叉堆有两种:最大堆和最小堆。最大堆:...
  • Mr_KkTian
  • Mr_KkTian
  • 2016年10月22日 15:11
  • 1348
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:67. Add Binary
举报原因:
原因补充:

(最多只允许输入30个字)