美文网首页工作生活
LeetCode-67. 二进制求和

LeetCode-67. 二进制求和

作者: 一只可爱的柠檬树 | 来源:发表于2019-07-02 16:58 被阅读0次

题目描述 二进制求和

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

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

示例 1:

输入: a = "11", b = "1"
输出: "100"

示例 2:

输入: a = "1010", b = "1011"
输出: "10101"

解题思路

思路是那个思路,写的也太麻烦了,哎,啥时候才能学会啊!没关系,已经学会一半了,至少知道先把短的字符串用0补齐了,但是下次能不用那么多if-else吗,请讲究技巧。

代码

class Solution {
public:
    string addBinary(string a, string b) {
        string res="";
        bool temp=false;
        int i=a.size()-1;
        int j=b.size()-1;

        while(i>=0||j>=0){
            int t;
            if(i>=0 && j>=0) t = a[i] - '0' + b[j] - '0';
            else if(i>=0) t = a[i] - '0';
            else if(j>=0) t = b[j] - '0';
            cout << "t:" << t << endl;
            if(temp && t==2){
                res = '1' + res;
            }else if(temp && t==1){
                res = '0' + res;
            }else if(temp && t==0){
                temp = false;
                res = '1' + res;
            }else if(!temp && t==2){
                temp = true;
                res = '0' + res;
            }else if(!temp && t==1){
                res = '1' + res;
            }else if(!temp && t==0){
                res = '0' + res;
            }
            i--;
            j--;
        }

        if(temp) res = '1' + res;
        return res;
    }
};

祭出大佬代码

class Solution {
public:
    string addBinary(string a, string b) {
        string res = "";
        int c = 0;
        int i = a.size() - 1;
        int 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);
            res = char(c%2 + '0') + res;
            c /= 2;
        }
        return res;
    }
};

相关文章

  • 二进制求和

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

  • 二进制求和

  • 二进制求和

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

  • 二进制求和

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

  • 二进制求和

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

  • 二进制求和

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

  • 二进制求和

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

  • 技术问 - 进制转换

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

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

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

  • python 二进制求和(lintcode)

    描述: 二进制求和原题地址:http://www.lintcode.com/submission/10872869...

网友评论

    本文标题:LeetCode-67. 二进制求和

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