LeetCode::Add Binary

来源:互联网 发布:linux 网络学习 编辑:程序博客网 时间:2024/06/13 03:36

https://oj.leetcode.com/problems/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) {        return b.size() > a.size() ? addOrderBinary(b, a) : addOrderBinary(a, b);    }private:    // The length of string a should be no shorter than string b.    string addOrderBinary(string longStr, string shortStr) {        string result(longStr);        bool carry = false;        string::size_type longLen = longStr.size();        string::size_type shortLen = shortStr.size();        string::size_type left = longLen - shortLen;        int longStrIndex;        int shortStrIndex;        for (string::size_type i = shortLen; i > 0; i--) {            longStrIndex = i + left - 1;            shortStrIndex = i - 1;            if (carry) {                if (shortStr[shortStrIndex] == '1') {                    continue;                }                if (result[longStrIndex] == '0') {                    result[longStrIndex] = '1';                    carry = false;                } else {                    result[longStrIndex] = '0';                }            } else {                if (shortStr[shortStrIndex] == '0') {                    continue;                }                if (result[longStrIndex] == '0') {                    result[longStrIndex] = '1';                } else {                    result[longStrIndex] = '0';                    carry = true;                }            }        }        for (string::size_type i = left; i > 0; i--) {            if (!carry) {                break;            }            longStrIndex = i - 1;            if (result[longStrIndex] == '0') {                result[longStrIndex] = '1';                carry = false;            } else {                result[longStrIndex] = '0';            }        }        if (carry) {            result.insert(0, "1");        }        return result;    }};


0 0
原创粉丝点击