LeetCode:二进制求和

二进制求和

要求

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

思路

从数组后面开始依次相加,长度不够的数组补零继续相加,将加出来的数据对2进行求余转换填充至输出数组,数据除以2判断是否要进位,

class Solution {
public:
    string addBinary(string a, string b) {
        string out;
        bool carry_flag=false;
        int m=a.size()-1;
        int n=b.size()-1;
        int a_value=0;
        int b_value=0;
        int sum=0;
        while(m>=0||n>=0){
            a_value= m>=0?a[m--]-'0':0;
            b_value= n>=0?b[n--]-'0':0;
            sum=a_value+b_value+carry_flag;
            out.insert(out.begin(),(sum%2)+'0');
            carry_flag=sum/2;
        }
        return carry_flag == 1 ? "1" + out : out;
    }
};
posted @ 2020-04-20 17:23  Breezy-ye  阅读(142)  评论(0编辑  收藏  举报