美文网首页
Leetcode 67. Add Binary

Leetcode 67. Add Binary

作者: persistent100 | 来源:发表于2017-06-28 16:13 被阅读0次

    题目

    Given two binary strings, return their sum (also a binary string).

    For example,
    a = "11"
    b = "1"
    Return "100".

    分析

    计算两个二进制数之和,思路和代码类似于大整数相加,只是十进制改为二进制,对应位数字相加,将进位进上去。
    需要注意的是""+"",""+"0","0"+"1"几个特殊的情况。

    char* addBinary(char* a, char* b) {
        int alength=0,blength=0;
        while(a[alength]!='\0')
            alength++;
        while(b[blength]!='\0')
            blength++;
        if(alength==0&&blength==0)
        {
            return "0";
        }
        char *ans=(char *)malloc(sizeof(char)*(alength+blength+1));
        
        int anslength=0;
        int temp=0,i=0;
        while(i<alength&&i<blength)
        {
            temp=temp+a[alength-i-1]-'0'+b[blength-i-1]-'0';
            if(temp>1)
            {
                ans[alength+blength-1-anslength]=temp%2+'0';
                temp=temp/2;
            }
            else
            {
                ans[alength+blength-1-anslength]=temp+'0';
                temp=0;
            }
            anslength++;
            i++;
        }
        while(i<alength)
        {
            temp=temp+a[alength-i-1]-'0';
            if(temp>1)
            {
                ans[alength+blength-1-anslength]=temp%2+'0';
                temp=temp/2;
            }
            else
            {
                ans[alength+blength-1-anslength]=temp+'0';
                temp=0;
            }
            anslength++;
            i++;
        }
        while(i<blength)
        {
            temp=temp+b[blength-i-1]-'0';
            if(temp>1)
            {
                ans[alength+blength-1-anslength]=temp%2+'0';
                temp=temp/2;
            }
            else
            {
                ans[alength+blength-1-anslength]=temp+'0';
                temp=0;
            }
            anslength++;
            i++;
        }
        if(temp>0)
        {
            ans[alength+blength-1-anslength]=temp+'0';
            anslength++;
        }
        printf("%d %d %d\n",alength,blength,anslength);
        ans[alength+blength]='\0';
        return ans+alength+blength-anslength;
    }
    

    相关文章

      网友评论

          本文标题:Leetcode 67. Add Binary

          本文链接:https://www.haomeiwen.com/subject/ojbucxtx.html