leetcode67:二进制求和

发布于:2024-06-11 ⋅ 阅读:(30) ⋅ 点赞:(0)

题目链接:67. 二进制求和 - 力扣(LeetCode)

class Solution {
public:
    string addBinary(string a, string b) {
        int stralen = a.size(), strblen = b.size();
        int curtc;
        int Maxlen = max(stralen, strblen);
        vector<int> stra;
        vector<int> strb;
        vector<int> strc;
        string ss1;
        for(int i = 0; i < a.size(); i++)
        {
            int curta = a[i] - '0';
            stra.push_back(curta);
        }
        for(int i = 0; i < b.size(); i++)
        {
            int curtb = b[i] - '0';
            strb.push_back(curtb);
        }
        if(stralen < strblen)
        {
            int difference = strblen - stralen;
            for(int i = 0; i < difference; i++)
            {
                stra.insert(stra.begin(), 0);
            }
        }
        if(stralen > strblen)
        {
            int difference = stralen - strblen;
            for(int i = 0; i < difference; i++)
            {
                strb.insert(strb.begin(), 0);
            }
        }
        for(int i = Maxlen - 1; i >= 1; i--)
        {
            int curt = stra[i] + strb[i];
            if(curt > 1)
            {
                curtc = stra[i] + strb[i] - 2;
                stra[i - 1]++;
                strc.push_back(curtc);
            }
            if(curt == 1)
            {
                strc.push_back(1);
            }
            if(curt == 0)
            {
                strc.push_back(0);
            }
        }
        if(stra[0] + strb[0] > 1)
        {
            curtc = stra[0] + strb[0] - 2;
            strc.push_back(curtc);
            strc.push_back(1);
        }
        if(stra[0] + strb[0] == 1)
        {
            strc.push_back(1);
        }
        if(stra[0] + strb[0] == 0)
        {
            strc.push_back(0);
        }
        for(int i = 0; i < strc.size(); i++)
        {
            ss1 += strc[i] + '0';
        }
        reverse(ss1.begin(), ss1.end());
        return ss1;
    }
};

这个题目算作中档题。这个题目实际上我把字符串转成每一个相应的数字了,然后从后往前遍历两个数组的每一位和,大于1在判断是2还是3,这个代码适用于二进制求和,要是其他进制求和,还得另外编写代码。


网站公告

今日签到

点亮在社区的每一天
去签到