力扣題解 67 二進位制求和

2021-10-07 12:21:55 字數 1824 閱讀 4089

67. 二進位制求和

給你兩個二進位制字串,返回它們的和(用二進位制表示)。

輸入為非空字串且只包含數字10

示例 1:

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

輸出: "100"

示例 2:

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

輸出: "10101"

解題方案

思路整體思路是將兩個字串較短的用 000 補齊,使得兩個字串長度一致,然後從末尾進行遍歷計算,得到最終結果。

本題解中大致思路與上述一致,但由於字串操作原因,不確定最後的結果是否會多出一位進製,所以會有 2 種處理方式:

第一種,在進行計算時直接拼接字串,會得到乙個反向字元,需要最後再進行翻轉

第二種,按照位置給結果字元賦值,最後如果有進製,則在前方進行字串拼接新增進製

時間複雜度:o(n)o(n)o(n)

官方版解法:

class solution 

return ans.reverse().tostring();

}}

民間版:

public string addbinary(string a, string b) 

int maxlen = a.length()>b.length()?a.length():b.length();

int inta = new int[maxlen];

int intb = new int[maxlen];

int res = new int[maxlen];

arrays.fill(inta, 0);

arrays.fill(intb, 0);

arrays.fill(res, 0);

int cusora = maxlen-1;

char stra = a.tochararray();

for (int i = stra.length-1; i >= 0; i--)

int cusorb = maxlen-1;

char strb = b.tochararray();

for (int i = strb.length-1; i >= 0; i--)

int index = maxlen-1;

boolean flag = false;

while (index > 0) else if (count == 2 && flag) else if (count == 0 && flag) else if (count == 0 && !flag) else if (count == 1 && !flag) else if (count == 1 && flag)

} //index=0

int count = inta[index] + intb[index];

string string = null;

if (count ==2 && flag) else if (count ==2 && !flag) else if (count==0 && !flag) else if (count==0 && flag) else if (count==1 && !flag) else if (count==1 && flag)

for (int i = 1; i < res.length; i++)

return string;

}

二進位制求和(力扣第67題)

題目 給你兩個二進位制字串,返回它們的和 用二進位制表示 輸入為非空字串且只包含數字1和0。示例1 輸入 a 11 b 1 輸出 100 示例2 輸入 a 1010 b 1011 輸出 10101 分析 其實就是兩個二進位制數的加法運算,兩個二進位制數相加,首先設定乙個進製識別符號flag,初始值設...

二進位制求和(力扣第67題)

題目 給你兩個二進位制字串,返回它們的和 用二進位制表示 輸入為非空字串且只包含數字1和0。示例1 輸入 a 11 b 1 輸出 100 示例2 輸入 a 1010 b 1011 輸出 10101 分析 其實就是兩個二進位制數的加法運算,兩個二進位制數相加,首先設定乙個進製識別符號flag,初始值設...

力扣 二進位制求和

給定兩個二進位制字串,返回他們的和 用二進位制表示 輸入為非空字串且只包含數字 1 和 0。示例 1 輸入 a 11 b 1 輸出 100 示例 2 輸入 a 1010 b 1011 輸出 10101 首先判斷兩個字串的長度,找到最長的那個,將兩個字串反轉,再將短的那乙個用字元 0 補齊 定義乙個字...