67. Add Binary

原创 2016年05月31日 10:04:51

67. Add Binary

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

For example,
a = "11"
b = "1"
Return "100".
Analysis:
相当于自己写一个加法运算,主要是处理好进位与当前位之间的关系。还有注意空字符串。
本题跟66. Plus One 比较类似。
Source Code(C++):

#include <iostream>
#include <string>
using namespace std;

class Solution {
public:
    string addBinary(string a, string b) {
        char digit_overflow='0';
        char current_bit='0';
        int a_index=a.size()-1, b_index=b.size()-1;
        string sum;
        while(a_index>=0 && b_index>=0){
            current_bit=(a.at(a_index)-'0'+b.at(b_index)-'0'+digit_overflow-'0')%2 + '0';
            sum.insert(0, 1, current_bit);
            digit_overflow = (a.at(a_index)-'0'+b.at(b_index)-'0'+digit_overflow-'0')/2 + '0';          
            a_index--;
            b_index--;
        }
        while(a_index>=0){
            current_bit=(a.at(a_index)-'0'+digit_overflow-'0')%2 + '0';
            sum.insert(0, 1, current_bit);
            digit_overflow = (a.at(a_index)-'0'+digit_overflow-'0')/2 + '0';        
            a_index--;
        }
        while(b_index>=0){
            current_bit=(b.at(b_index)-'0'+digit_overflow-'0')%2 + '0';
            sum.insert(0, 1, current_bit);
            digit_overflow = (b.at(b_index)-'0'+digit_overflow-'0')/2 + '0';        
            b_index--;
        }
        if (digit_overflow > '0') {
            sum.insert(0, 1, digit_overflow);
        }
        return sum;
    }
};


int main() {
    Solution sol;
    cout << sol.addBinary("", "");
    cout << sol.addBinary("101", "1");
    cout << sol.addBinary("10", "11");
    return 0;
}
版权声明:转载请注明出处,谢谢。

67. Add Binary [easy] (Python)

题目链接 https://leetcode.com/problems/add-binary/ 题目原文 题目翻译 思路方法 思路一 代码 说明 思路...
  • coder_orz
  • coder_orz
  • 2016年06月18日 17:29
  • 2905

[leetcode-67]Add Binary(C)

问题描述: Given two binary strings, return their sum (also a binary string).For example, a = “11” b =...
  • zdavb
  • zdavb
  • 2015年08月02日 22:41
  • 241

【leetcode】67. Add Binary(Python & C++)

67. Add Binary题目链接67.1 题目描述:Given two binary strings, return their sum (also a binary string).For ex...
  • liuxiao214
  • liuxiao214
  • 2017年09月04日 20:18
  • 195

[C++]LeetCode: 9 Add Binary

题目: Given two binary strings, return their sum (also a binary string). For example, a = "11...
  • cinderella_niu
  • cinderella_niu
  • 2014年11月06日 21:36
  • 950

LeetCode(67) Add Binary

题目Given two binary strings, return their sum (also a binary string).For example, a = “11” b = “1” ...
  • fly_yr
  • fly_yr
  • 2015年08月19日 20:58
  • 1844

leetcode解题之67 # Add Binary Java版

leetcode解题之67 # Add Binary Java版
  • mine_song
  • mine_song
  • 2017年03月13日 10:40
  • 159

Add Binary | leetcode 67 【Java解题报告】

Given two binary strings, return their sum (also a binary string). For example, a = "11" b = "1" Re...
  • happyaaaaaaaaaaa
  • happyaaaaaaaaaaa
  • 2015年10月04日 14:23
  • 1811

LeetCode 67 — Add Binary(C++ Java Python)

题目:http://oj.leetcode.com/problems/add-binary/ Given two binary strings, return their sum (also a bi...
  • dragon_dream
  • dragon_dream
  • 2014年02月26日 21:18
  • 2405

leetcode 67 Add Binary C++

先对齐,在相加,注意进位即可。 string addBinary(string a, string b) { bool flag = false; int aSize...
  • a2331046
  • a2331046
  • 2016年06月13日 10:54
  • 347

LeetCode 67 : Add Binary (Java)

解题思路:从末尾依次对应相加来求,转成int中的相加会使代码比较简洁,因为可以用/和%来分别求出进位和当前往结果中添加的位。然后,把较长的字符串剩下的部分和进位相加放入结果。最后,还要判断进位此时是否...
  • changetocs
  • changetocs
  • 2015年12月03日 21:08
  • 658
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:67. Add Binary
举报原因:
原因补充:

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