2019-08-21 二进制求和

作者: Antrn | 来源:发表于2019-08-21 19:48 被阅读0次

给定两个二进制字符串,返回他们的和(用二进制表示)。

输入为非空字符串且只包含数字 1 和 0。

示例 1:

输入:

a = "11"
b = "1"

输出:

"100"

示例 2:

输入:

a = "1010"
b = "1011"

输出:

"10101"
C++
class Solution {
public:
    string addBinary(string a, string b) {
        int lena = a.length();
        int lenb = b.length();
        // cout << lena << ", " << lenb << endl;
        string res;
        int k=0,i=lena-1,j=lenb-1;
        string temp(1,'0');
        while(j>=0 && i>=0){
            // cout << "ss" << a[i]-'0'+b[j]-'0'+k <<endl;
            if(a[i]-'0'+b[j]-'0'+k == 2){
                k = 1;
                res.insert(0, temp);
                // cout << res << endl;
            }else{
                if(a[i]-'0'+b[j]-'0'+k == 3){
                    string s(1,'1');
                    res.insert(0, s);
                    k=1;
                }else{
                    char c = a[i]-'0'+b[j]-'0'+k +'0';
                    string s(1, c);
                    res.insert(0, s);
                    k=0;
                }
            }
            --i;--j;
        }
        int index = i>j?i:j;
        for(int i=index;i>=0;i--){
            if(lena>=lenb){
                if(a[i]-'0'+k == 2){
                    res.insert(0, temp);
                    k=1;
                }else{
                    string s(1, a[i]-'0'+k+'0');
                    res.insert(0, s);
                    k=0;
                }
                
            }else{
                if(b[i]-'0'+k == 2){
                    res.insert(0, temp);
                    k=1;
                }else{
                    string s(1, b[i]-'0'+k+'0');
                    res.insert(0, s);
                    k=0;
                }
            }
        }
        if(k == 1){
            string s(1,'1');
            res.insert(0, s);
        }
        return res;
    }
};

相关文章

  • 2019-08-21 二进制求和

    给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 1: 输入...

  • 二进制求和

    给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。 示例 1:输入: ...

  • 二进制求和

  • 二进制求和

    给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 1: 输入...

  • 二进制求和

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-...

  • 二进制求和

    LeetCode第67题 题目描述: 给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且...

  • 二进制求和

    题目 难度级别:简单 给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 ...

  • 二进制求和

    力扣67题 思路:类似力扣第二题,相加之后模(%)进制数获得当前位数的值,然后用相加之后的数除以进制数,获得进位的...

  • 技术问 - 进制转换

    二进制转化成八进制 二进制转化成十六进制 任意进制转化为十进制 利用十进制转化十进制,推导出按权求和规律 按权求和...

  • LeetCode 每日一题 [28] 二进制求和

    LeetCode 二进制求和 [简单] 给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串...

网友评论

    本文标题:2019-08-21 二进制求和

    本文链接:https://www.haomeiwen.com/subject/mzzisctx.html