二进制数之和

qq_38190854 2018-05-20 09:42:21

这是一道leetcode的题目,下面是我写的程序,先求出两个二进制数之和,结果是十进制,将这个结果转化为二进制,可是提交之后不对,请大家帮我看一下啊问题出在哪里,非常感谢
class Solution {
public:
string addBinary(string a, string b) {
int m=a.size();int n=b.size();
int sum1=0;int sum2=0;
stack<int>s;
for(int i=m-1;i>=0;i--)
{
sum1+=a[m-1-i]*pow(2,i);
}
for(int j=n-1;j>=0;j--)
{
sum2+=a[n-1-j]*pow(2,j);
}
int sum=sum1+sum2;
while(sum!=0)
{
s.push(sum%2);
sum=sum/2;
}

string res="";
while(!s.empty())
{
res+=to_string(s.top());
s.pop();
}
return res;
}
};
...全文
469 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
真相重于对错 2018-05-21
  • 打赏
  • 举报
回复
百度加法器!
自信男孩 2018-05-21
  • 打赏
  • 举报
回复
for(int i=m-1;i>=0;i--)
        {
           sum1+= (a[m-1-i] - ‘0’ )*pow(2,i); 
        }
        for(int j=n-1;j>=0;j--)
        {
           sum2+=(b[n-1-j] - '0')*pow(2,j); 
        }
注意a, b是字符串,字符串转十进制数,比如'1'转10进制数值是'1' - '0'; 另外,第二个循环是对字符串b的而不是a

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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