【LeetCode】67. Add Binary

来源:互联网 发布:高中网上听课软件 编辑:程序博客网 时间:2024/05/19 05:33

题目描述

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

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

解题思路

大数相加二进制版。
先把两个数从最小位开始相加,最后把较长那个数与carry相加,直到结束。

AC代码

class Solution {public:    string addBinary(string a, string b) {        string ans;        int carry = 0;        int ai = a.size() - 1, bi = b.size() - 1;        for (; ai >= 0 && bi >= 0; --ai, --bi) {            int sum = (a[ai] - '0') + (b[bi] - '0') + carry;            ans.push_back(sum % 2 + '0');            carry = sum / 2;        }        string longStr = ai < 0 ? b : a;        int startIdx = ai < 0 ? bi : ai;        for (; startIdx >= 0; --startIdx) {            int sum = (longStr[startIdx] - '0') + carry;            ans.push_back(sum % 2 + '0');            carry = sum / 2;        }        if (carry != 0)             ans.push_back(carry + '0');        reverse(ans.begin(), ans.end());        return ans;    }};
0 0