LeetCode-67. 二進制求和

題目描述 二進制求和

給定兩個二進制字符串,返回他們的和(用二進制表示)。

輸入為非空字符串且只包含數(shù)字 1 和 0。

示例 1:

輸入: a = "11", b = "1"
輸出: "100"

示例 2:

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

解題思路

思路是那個思路,寫的也太麻煩了,哎,啥時候才能學會??!沒關(guān)系,已經(jīng)學會一半了,至少知道先把短的字符串用0補齊了,但是下次能不用那么多if-else嗎,請講究技巧。

代碼

class Solution {
public:
    string addBinary(string a, string b) {
        string res="";
        bool temp=false;
        int i=a.size()-1;
        int j=b.size()-1;

        while(i>=0||j>=0){
            int t;
            if(i>=0 && j>=0) t = a[i] - '0' + b[j] - '0';
            else if(i>=0) t = a[i] - '0';
            else if(j>=0) t = b[j] - '0';
            cout << "t:" << t << endl;
            if(temp && t==2){
                res = '1' + res;
            }else if(temp && t==1){
                res = '0' + res;
            }else if(temp && t==0){
                temp = false;
                res = '1' + res;
            }else if(!temp && t==2){
                temp = true;
                res = '0' + res;
            }else if(!temp && t==1){
                res = '1' + res;
            }else if(!temp && t==0){
                res = '0' + res;
            }
            i--;
            j--;
        }

        if(temp) res = '1' + res;
        return res;
    }
};

祭出大佬代碼

class Solution {
public:
    string addBinary(string a, string b) {
        string res = "";
        int c = 0;
        int i = a.size() - 1;
        int j = b.size() - 1;
        while(i >= 0 || j>=0 || c==1){
            c += (i>=0 ? a[i--] - '0':0);
            c += (j>=0 ? b[j--] - '0':0);
            res = char(c%2 + '0') + res;
            c /= 2;
        }
        return res;
    }
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 題目 給定兩個二進制字符串,返回他們的和(用二進制表示)。 輸入為非空字符串且只包含數(shù)字 1 和 0。 示例 1:...
    碼蹄疾閱讀 859評論 0 1
  • 給定兩個二進制字符串,返回他們的和(用二進制表示)。輸入為非空字符串且只包含數(shù)字 1 和 0。 C 逆向遍歷記錄標...
    餅干不干閱讀 472評論 0 50
  • 67 Add Binary 二進制求和 Description:Given two binary strings,...
    air_melt閱讀 262評論 0 1
  • 給定兩個二進制字符串,返回他們的和(用二進制表示)。輸入為非空字符串且只包含數(shù)字 1 和 0。示例 1:輸入: a...
    PRE_ZHY閱讀 477評論 0 0
  • 二進制求和 題目 給定兩個二進制字符串,返回他們的和(用二進制表示)。 輸入為非空字符串且只包含數(shù)字 1 和 0。...
    飲酒醉回憶閱讀 277評論 0 0

友情鏈接更多精彩內(nèi)容