1. 程式人生 > >Leetcode:Add Binary 二進位制相加

Leetcode:Add Binary 二進位制相加

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

For example,
a = "11"
b = "1"
Return "100".

思路同十進位制的大數相加。程式碼如下:

class Solution {
public:
    string addBinary(string a, string b) {
       size_t len_a = a.length();
       size_t len_b = b.length();
       if(len_a == 0)
        return b;
       if(len_b == 0)
        return a;
       int i = len_a - 1;
       int j = len_b - 1;
       int increase = 0;
       stack<int> result_stk;
       while(i >= 0 && j >= 0)
       {
           int s = a[i] - '0' + b[j] - '0' + increase;
           increase = s / 2;
           int sum = s % 2;
           result_stk.push(sum);
           i--;
           j--;
       }
       while(i >= 0)
       {
           int s = a[i] - '0' + increase;
           increase = s / 2;
           int sum = s % 2;
           result_stk.push(sum);
           i--;
       }
       while(j >= 0)
       {
           int s = b[j] - '0' + increase;
           increase = s / 2;
           int sum = s % 2;
           result_stk.push(sum);
           j--;
       }
       if(increase == 1)
       result_stk.push(1);
       
       string result;
       while(!result_stk.empty())
       {
           result += result_stk.top() + '0';
           result_stk.pop();
       }
       return result;
    }
};