LeetCode 67: Add Binary

来源:互联网 发布:电商原生app源码 编辑:程序博客网 时间:2024/06/16 17:08

题目链接:

https://leetcode.com/problems/add-binary/description/

描述

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

For example,
a = “11”
b = “1”
Return “100”.

输入

输入两个字符串,a和b,求二进制和并以字符串形式返回。

输出

返回一个字符串。

样例输入

”11”
“1”

样例输出

”100”

算法思想:

使用的思想是大数相乘的思想,只不过这里使用的是大数相加的。

源代码

class Solution {public:    string addBinary(string a, string b) {        int carr = 0,len1 = a.length(),len2 = b.length();        int len = max(len1,len2);        string str;        reverse(a.begin(),a.end());        reverse(b.begin(),b.end());        for(int i = 0;carr || i < len;i++)        {           if(i < len1 && i < len2)           {                carr += (a[i] - '0') + (b[i] - '0');           }            else if(i < len2)            {                carr += (b[i] - '0');            }            else if(i < len1)                carr += (a[i] - '0');            str += (carr % 2) + '0';            carr /= 2;        }        reverse(str.begin(),str.end());        cout<<str<<endl;        return str;    }};

最优源代码

最优算法也是使用大数相加的思想。

class Solution{public:    string addBinary(string a, string b)    {        string s = "";        int c = 0, i = a.size() - 1, j = b.size() - 1;        while(i >= 0 || j >= 0 || c == 1)        {            c += i >= 0 ? a[i --] - '0' : 0;            c += j >= 0 ? b[j --] - '0' : 0;            s = char(c % 2 + '0') + s;            c /= 2;        }        return s;    }};