leetcode:67. 二进制求和(数学)

题目:

在这里插入图片描述
想起了我那苦命的vhdl

代码:

string s(max(a.length(),b.length())+1,0);
 reverse(a.begin(),a.end());
 reverse(b.begin(),b.end());
 int c=0;
 for(int i=0;i<a.length()||i<b.length();i++)
 {
  if(i>=a.length())
  {
   if(b[i]=='1'&&c==1)
   {
    s[i]='0';
   }
   else if(c==0&&b[i]=='0'){
    c=0;
    s[i]='0';
   }
   else{
    c=0;
    s[i]='1';
   }
  }
  else if(i>=b.length())
  {
   if(a[i]=='1'&&c==1)
   {
    s[i]='0';
   }
   else if(c==0&&a[i]=='0'){
    c=0;
    s[i]='0';
   }
   else{
    c=0;
    s[i]='1';
   }
  }
  else {
   if(a[i]=='1'&&b[i]=='1'){
    s[i]=c+'0';
    c=1;
   }
   else if(a[i]=='0'&&b[i]=='0')
   {
    s[i]=c+'0';
    c=0;
   }
   else if(c==0)
   {
    s[i]='1';
    c=0;
   }
   else{
    s[i]='0';
   }
  }
 }
 s[s.length()-1]=c+'0';
 reverse(s.begin(),s.end());
 if(s[0]=='0') {
  s=s.substr(1,s.length()-1);
 }
 cout<<s;
发布了196 篇原创文章 · 获赞 126 · 访问量 4668

猜你喜欢

转载自blog.csdn.net/weixin_42721412/article/details/104515586