LeetCode 67 --- 二进制求和

给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。

示例 1:

输入:a = "11", b = "1"
输出:"100"

示例 2:

输入:a = "1010", b = "1011"
输出:"10101"

 

题解:

void reverse(char *a,int n)
{
int i= 0;
int j = n-1;
char tmp;
while(i<j)
{
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
i++;
j--;
}
}
char* addBinary(char* a, char* b)
{
int m = strlen(a);
int n = strlen(b);
reverse(a,m);
reverse(b,n);
int maxn = (m > n ? m : n);
char * ans = (char*) malloc(sizeof(char)*(maxn + 2));
int c = 0;
int i = 0;
int j = 0;
int k = 0;
while(i<m && j<n)
{
int d = (a[i]-'0') +(b[j]-'0') + c;
ans[k] = d%2 + '0';
c = d/2;
i++;
j++;
k++;
}
while(i<m)
{
int d = (a[i] - '0') +c;
ans[k] = d%2 + '0';
c =d/2;
i++;
k++;
}
while(j<n)
{
int d = (b[j]-'0')+c;
ans[k] = d%2 +'0';
c = d/2;
j++;
k++;
}
if(c==1)
{
ans[k] = '1';
k++;
}
ans[k] = '\0';
reverse(ans,k);
return ans;
}

 

posted @   轩~邈  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示