遍历过程中,分别取得字符串 a 和 b 在各自索引的数值(如果字符串 a 或 b 已走完全程就直接将对应数值置为 0)。
将两个数值与进位 ca 进行相加,根据相加结果更新 ans 和 ca。
遍历结束后,判断进位 ca 是否为 1,如果为 1 则需要更新 ans。
最后将 ans 进行 reverse 操作即可。
代码实现:
classSolution{public:
string addBinary(string a, string b){int m = a.size()-1, n = b.size()-1;
string ans ="";int ca =0;// 进位while(m >=0or n >=0){int num1 = m >=0? a[m]-'0':0;int num2 = n >=0? b[n]-'0':0;
ca += num1 + num2;
ans += ca &1==1?'1':'0';
ca /=2;--m,--n;}if(ca ==1) ans +='1';elseif(ans =="") ans +='0';reverse(ans.begin(), ans.end());return ans;}};