1. 程式人生 > >67. 二進位制求和

67. 二進位制求和

給定兩個二進位制字串,返回他們的和(用二進位制表示)。

輸入為非空字串且只包含數字 1 和 0。

示例 1:

輸入: a = “11”, b = “1”
輸出: “100”
示例 2:

輸入: a = “1010”, b = “1011”
輸出: “10101”

class Solution {
public:
    string addBinary(string a, string b) {
        int len1 = a.size();
        int len2 = b.size();
        if(len1==0){
            return b;
        }
        if
(len2==0){ return a; } string ret; int carry = 0; int index1 = len1-1; int index2 = len2-1; while(index1>=0&&index2>=0){ int num = (a[index1]-'0')+(b[index2]-'0')+carry; carry = num/2; num = num%2; index1--; index2--; ret.insert(ret.begin(),num+'0'
); } if(index1<0&&index2<0){ if(carry==1){ ret.insert(ret.begin(),carry+'0'); return ret; } } while(index1>=0){ int num = (a[index1]-'0')+carry; carry = num/2; num = num%2
; index1--; ret.insert(ret.begin(),num+'0'); } while(index2>=0){ int num = (b[index2]-'0')+carry; carry = num/2; num = num%2; index2--; ret.insert(ret.begin(),num+'0'); } if(carry==1){ ret.insert(ret.begin(),carry+'0'); } return ret; } };