题目:
解题:
实现二进制的加法,使用预先开辟数组记录。
代码:
class Solution {
public:
string addBinary(string a, string b) {
int lena = a.size(), lenb = b.size();
int maxlen = max(lena + 1, lenb + 1);
string result(maxlen,'0');
int index = 0, flag = 0, i, j;
for( i = lena - 1, j = lenb - 1;i >= 0 && j >= 0; --i,--j){
if(a[i] == '0' && b[j] == '0'){
result[index++] = flag ? '1' : '0';
flag = 0;
}
else if(a[i] != '0' && b[j] != '0'){
result[index++] = flag ? '1' : '0';
flag = 1;
}else{
result[index++] = flag ? '0' : '1';
}
}
if(i >= 0){
for(;i >= 0;--i){
if(a[i] == '0'){
result[index++] = flag ? '1' : '0';
flag = 0;
}else{
result[index++] = flag ? '0' : '1';
}
}}
if(j >= 0){
for(;j >= 0;--j){
if(b[j] == '0'){
result[index++] = flag ? '1' : '0';
flag = 0;
}else{
result[index++] = flag ? '0' : '1';
}
}}
if(flag)
result[index++] = '1';
for(i = 0;i < index / 2; ++i){
swap(result[i], result[index-i-1]);
}
if(index == maxlen)
return result;
else
return result.substr(0,index);
}
};
更新会同步在我的网站更新(https://zergzerg.cn/notes/webnotes/leetcode/index.html)