翻译
主要思路
核心思路是像竖式计算一样,不过需要将字符串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;}
};