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 size_a = a.size(), size_b = b.size(), count = 0;
string res;
while(size_a>0 || size_b>0 || count>0)
{
int a_i = size_a > 0 ? (a.at(-1+size_a--)-'0') : 0;
int b_i = size_b > 0 ? (b.at(-1+size_b--)-'0') : 0;
int sum = a_i + b_i + count;
count = sum/2;
res.append(1, ('0'+sum%2)); //pay attention here, 1 cannot be ignored
}
return string(res.rbegin(), res.rend());
}
};
本文介绍了一种解决二进制字符串相加问题的方法。通过从后往前遍历两个二进制字符串,逐位进行相加,并处理进位,最终得到结果。文中提供了一个简洁的C++实现案例。
2755

被折叠的 条评论
为什么被折叠?



