67.Add Binary

67.Add Binary

难度:Easy

给定两个二进制字符串,返回他们的和(用二进制表示)。

输入为非空字符串且只包含数字 1 和 0。

示例 1:

输入: a = "11", b = "1" 输出: "100" 示例 2:

输入: a = "1010", b = "1011" 输出: "10101"

按普通加法一位一位算,留一个进位标志。

class Solution {
public:
    string addBinary(string a, string b) {
        a='0'+a;
        b='0'+b;
     //   cout<<a<< " " <<b <<endl;
        if(a.length()>b.length())
        {
            int tmp=a.length()-b.length();
            while(tmp--)
            b= '0'+b;
            
        }
        else if(a.length()<b.length())
        {
            int tmp=b.length()-a.length();
            while(tmp--)
            a='0' +a;
        }
    //     cout<<a<< " " <<b <<endl;
        bool flag=false;
        int len=a.length();
        string res;
        for(int i=len-1;i>0;i--)
        {
            if(a[i] ^ b[i])
            {
                if(flag)
                    res='0'+res;
                else
                    res = '1'+res;
            }
            else
            {
                if(a[i]=='0')
                {
                    if(flag)
                    {
                        res= '1'+res;
                        flag=false;
                    }
                    else 
                        res= '0'+res;
                }
                else
                {
                    if(flag)
                        res= '1'+res;
                    else
                    {
                        res='0'+res;
                        flag=true;
                    }
                }
            }
        }
        if(flag) res='1'+res;
        return res;
    }
};

执行用时 :16 ms, 在所有 C++ 提交中击败了24.74%的用户 内存消耗 :9.3 MB, 在所有 C++ 提交中击败了6.03%的用户

Last updated