首页 > 其他 > 详细

leetcode Add Binary

时间:2014-11-09 00:56:19      阅读:321      评论:0      收藏:0      [点我收藏+]

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

主要就是考查进位如何操作,以及最后如果加完之后进位还是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;
    }
};

 

leetcode Add Binary

原文:http://www.cnblogs.com/higerzhang/p/4084283.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!