67. Add Binary

来源:互联网 发布:怎么把照片上传到淘宝 编辑:程序博客网 时间:2024/06/11 15:37
Given two binary strings, return their sum (also a binary string).


For example,
a = "11"
b = "1"

Return "100".

设置一个·carry位,如果两个数按位相加和大于等于2则carry位等于1

class Solution 
{
public:
    string addBinary(string a, string b)
    {

      int lena=a.size();

      int lenb=b.size();

      if(lena==0)

      return b;

     if(lenb==0)

      return a;

      int  k=lena>lenb?lena-1:lenb-1;

      string result=lena>lenb?a:b;

      int carry(0);

      int ia=lena-1;

      int ib=lenb-1;

      while(ia>=0&&ib>=0)

          {

             int temp;

             temp=(a[ia] - '0') + (b[ib] - '0') + carry;

             if(temp>=2)

              {

                    temp=temp-2;

                    carry=1;

              }

              else

            {

                  carry=0;

            }

           result[k]=temp+'0';

            ia--;

            ib--;

             k--;

        

          }

        while(ia>=0)

           {

            

                 int temp;

             temp=a[ia]-'0'+carry;

             if(temp>=2)

              {

                    temp=temp-2;

                    carry=1;

              }

              else

            {

                  carry=0;

            }

           result[k]=temp+'0';

            ia--;

           

             k--;

           }

           

    while(ib>=0)

           {

            

                 int temp;

             temp=a[ib]-'0'+carry;

             if(temp>=2)

              {

                    temp=temp-2;

                    carry=1;

              }

              else

            {

                  carry=0;

            }

           result[k]=temp+'0';

            ib--;

           

             k--;

           }

            if(carry==1)

            result='1'+result;

           else

           return result;


     }

}l;



原创粉丝点击