题目地址:
https://leetcode.com/problems/add-binary/
给定两个字符串形式的二进制数,要求返回两个数的和的字符串表示。
模拟人工加法即可。不过注意要从后向前加(也就是从个位开始加)。代码如下:
class Solution {
public:
string addBinary(string a, string b) {
string s;
int t = 0;
for (int i = a.size() - 1, j = b.size() - 1; i >= 0 || j >= 0;) {
if (i >= 0) t += a[i--] - '0';
if (j >= 0) t += b[j--] - '0';
s += to_string(t % 2);
t >>= 1;
}
if (t) s += '1';
reverse(s.begin(), s.end());
return s;
}
};
时空复杂度 O ( n ) O(n) O(n)。