ieetcode 67题 求二进制和

Arthur3827 2018-09-29 11:04:03
题目:
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。

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

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

//---------------------------------------------------//
char* addBinary(char* a, char* b) {
int i=0;
int j=0;
int tmp=0;
while(a[i]||b[j]){
if(a[i++]){}
if(a[j++]){}
}

char result[100];
int carry=0;
while(i>0&&j>0){
tmp+=(carry+(a[i-1]-'0')+(b[j-1]-'0'));
carry=tmp/2;
result[(i>j)?i:j]=tmp%2+'0';
i--;
j--;
}
while(i>0){
tmp=carry+(a[i-1]-'0');
carry=tmp/2;
result[i]=tmp%2+'0';
}
while(j>0){
tmp=carry+(b[j-1]-'0');
carry=tmp/2;
result[j]=tmp%2+'0';
}
if(carry){
result[0]='1';
return result;
}
return &result[1];
}
//-------------------------------------------//
提交运行后结果为null
算法中哪里出错了?
...全文
185 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
英雄@末路 2018-10-15
  • 打赏
  • 举报
回复
char result[100];
这个函数里定义的临时变量,存在栈。
return &result[1];
这个返回栈地址,你想干哈?退出函数后该地址回收,你得到的是随机值

Black_Blade 2018-10-12
  • 打赏
  • 举报
回复
我觉得可能是两个原因:
1.没对输入a, b可能为空做判断
2.没在result数组的末尾加0,C语言判断字符串是默认字符数组末尾为0的
tanta 2018-09-30
  • 打赏
  • 举报
回复
这不是算法的题吧,发到C板块估计回答的人比较多

33,006

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧