LintCode408:二进制求和

来源:互联网 发布:爸爸妈妈的网络用语 编辑:程序博客网 时间:2024/06/04 01:18

题目描述

给定两个二进制字符串,返回他们的和(用二进制表示)。

测试样例

a = 11b = 1返回 100

解题思路

同大整数问题类似。
代码如下:

class Solution {public:    /*     * @param a: a number     * @param b: a number     * @return: the result     */    string addBinary(string &a, string &b) {        // write your code here        int len1 = a.size() - 1;        int len2 = b.size() - 1;        string result = "";        int m = 0;        int n = 0;        while(len1 >= 0 && len2 >= 0){            m = (a[len1]-'0' + b[len2] - '0' + n) % 2;            n = (a[len1]-'0' + b[len2] - '0' + n) / 2;            result = to_string(m) + result;            len1--;            len2--;        }        while (len1 >= 0){            m = (a[len1]-'0' + n) % 2;            n = (a[len1]-'0' + n) / 2;            result = to_string(m) + result;            len1--;        }         while (len2 >= 0){            m = (b[len2] - '0' + n) % 2;            n = (b[len2] - '0' + n) / 2;            result = to_string(m) + result;            len2--;        }        if (n > 0) result = to_string(n) + result;        return result;    }};
原创粉丝点击