Add Binary

来源:互联网 发布:wps怎么筛选多个数据 编辑:程序博客网 时间:2024/05/16 23:34

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

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


1. 从后向前挨个把a,b对应的位置上的1或者0加起来,
2. 再加上上次的carrier,然后更新carrier和当前位置需要填充的值(1/0)
3. 终止条件是两个string都已经算完并且carrier为0,这就把所有的进位情况都包括了
4. 最后把存放结果的string反转并返回(因为在计算过程中,每个位置的结果是动态插入尾部的)



------------------------------
class Solution {public:    string addBinary(string a, string b) {        // IMPORTANT: Please reset any member data you declared, as        // the same Solution instance will be reused for each test case.        int carrier = 0;        string ret = "";        for (int i = a.length() - 1, j = b.length() - 1; i >= 0 || j >= 0 || carrier > 0; i--, j--) {            int num1 = (i >= 0 ? a[i] - '0' : 0);            int num2 = (j >= 0 ? b[j] - '0' : 0);            int cval = num1 + num2 + carrier;            carrier = cval / 2;            cval %= 2;            ret.push_back(cval + '0');        }                reverse(ret.begin(), ret.end());        return ret;    }};


0 0
原创粉丝点击