随笔 - 176  文章 - 0  评论 - 18  阅读 - 11万

leetcode Add Binary

题目:给定两个二进制字符串,返回相加的结果,也是二进制表示。

主要就是考查进位如何操作,以及最后如果加完之后进位还是1的话那么不能漏了还要加1.跟之前有做过一题的类似。

因为这题easy就是判断,所以直接贴代码了,感觉好长的样子。

复制代码
class Solution {
public:
    string addBinary(string a, string b) {
        if(a.size()==0 || b.size()==0) return a+b;
        string ans = "";
        int up = 0, lena = a.size() - 1, lenb = b.size() - 1;
        while(lena >= 0 && lenb >= 0)
        {
            if (a[lena] == b[lenb] && a[lena] == '1')
            {
                if(up == 1)
                    ans = '1' + ans;
                else
                {
                    ans = '0' + ans; up=1;         
                }
            }
            else if (a[lena] == '0' && b[lenb] == '0')
            {
                if(up == 1)
                    {ans = '1' + ans; up = 0;}
                else
                    ans = '0' + ans;
            }
            else
            {
                if(up == 1)
                    {ans = '0' + ans; up = 1;}
                else
                    ans = '1'+ ans;
            }
            lena--; lenb--;
        }
        while(lena>=0)
        {
            if(a[lena] == '1' && up == 1)
                ans = '0' + ans;
            else if (up == 1)
            {
                ans = '1' + ans; up = 0;
            }
            else
            {
                ans = a[lena] + ans;
            }
            lena--;
        }
        while(lenb>=0)
        {
            if(b[lenb] == '1' && up == 1)
                ans = '0' + ans;
            else if (up == 1)
            {
                ans = '1' + ans; up = 0;
            }
            else
            {
                ans = b[lenb] + ans;
            }
            lenb--;
        }
        if(up == 1)
            ans = '1' + ans;
        return ans;
    }
};
复制代码

 

posted on   higerzhang  阅读(209)  评论(0编辑  收藏  举报
努力加载评论中...
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示