Leetcode: Add Binary

来源:互联网 发布:中科大软件学院招生 编辑:程序博客网 时间:2024/06/06 05:50

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) {        int asize = a.size();        int bsize = b.size();        int size = max(asize, bsize);        asize = size - asize;        bsize = size - bsize;        string result = "0";        int tmp, last_zero = 0;        for (int i = 0; i < size; ++i) {            tmp = 0;            if (i >= asize) {                tmp += a[i - asize] - '0';            }            if (i >= bsize) {                tmp += b[i - bsize] - '0';            }            if (tmp >= 2) {                result[last_zero] = '1';                for (int j = last_zero + 1; j <= i; ++j) {                    result[j] = '0';                }                tmp -= 2;            }            result.push_back(tmp + '0');            if (tmp == 0) {                last_zero = i + 1;            }        }                if (result[0] == '0') {            result = result.substr(1);        }                return result;    }};

===================第二次===============

运算符优先级,+ 高于 按位&;这个弄错了折腾好久,看来要多加括号呀。

class Solution {public:    string addBinary(string a, string b) {        int asize = a.size();        int bsize = b.size();        int rsize = max(asize, bsize) + 1;        string result(rsize, '0');                int sum = 0;        int length = min(asize, bsize);        for (int i = 0; i < length; ++i) {            sum += a[asize-1-i] - '0' + b[bsize-1-i] - '0';            result[rsize-1-i] = '0' + (sum & 1);            sum >>= 1;        }                string remaining = asize > bsize ? a : b;        for (int i = length; i < rsize - 1; ++i) {            sum += remaining[rsize-2-i] - '0';            result[rsize-1-i] = '0' + (sum & 1);            sum >>= 1;        }        if (sum == 1) {            result[0] = '1';        }        else {            result = result.substr(1);        }                return result;    }};



0 0
原创粉丝点击