class Solution {
public:
string addBinary(string a, string b) {
int lena = a.size();
int lenb = b.size();
string result="";
int i=lena-1, j=lenb-1;
int flag=0, temp;
while((i+1) || (j+1)){
a[i] = (i==-1)?'0':a[i];
b[j] = (j==-1)?'0':b[j];
if(a[i]-'0'+b[j]-'0' + flag == 2){
flag=1;
result.push_back('0');
}
else{
if(a[i]-'0'+b[j]-'0' + flag == 0)
result.push_back('0');
else
result.push_back('1');
flag=0;
}
i = (i!=0 && i!=-1)?(i-1):(-1);
j = (j!=0 && j!=-1)?(j-1):(-1);
}
if(flag==1)
result.push_back('1');
reverse(result.begin(), result.end());
return result;
}
};短二进制数没有报错,在输入的二进制数串长度过大时会报错:double free or corruption (out): 0x0000000001e270f0 ***
本文介绍了一个C++实现的二进制字符串相加的方法,通过遍历两个二进制字符串并进行逐位相加来得出结果。文章提供了一段具体的代码示例,并指出在处理长二进制字符串时可能会遇到的问题。
202

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



