翻译
主要思路
核心思路是像竖式计算一样,不过需要将字符串a和b反转后逐位进行二进制计算得到字符串c,最后再将c反转就是答案
逐位计算的时候利用count,在将a和b当前位置数字相加后通过模2来决定字符串c对应位置的数字
count /= 2,是清除了当前的进位,同时保留了下一位的进位
最后如果count不为0,说明字符串c还要进一位
第一次写错误
代码
class Solution {
public:
string addBinary(string a, string b) {
string ansString;
int scanlLength = max(a.size(), b.size());
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
int count = 0;
for(int i = 0; i < scanlLength; i++) {
count += i < a.length() ? (a.at(i) == '1') : 0;
count += i < b.length() ? (b.at(i) == '1') : 0;
ansString.push_back((count % 2) ? '1' : '0');
count /= 2;
}
if(count) {
ansString.push_back('1');
}
reverse(ansString.begin(), ansString.end());
return ansString;
}
};