67 二進位制求和

2021-08-18 22:27:17 字數 917 閱讀 8094

一、題意

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

輸入為非空字串且只包含數字 1 和 0。

示例 1:

輸入: a = 「11」, b = 「1」

輸出: 「100」

示例 2:

輸入: a = 「1010」, b = 「1011」

輸出: 「10101」

二、分析和解答

public string addbinary(string a, string b) 

string str = "";

for(int t=0;tstr += res[t];

}if('0' == str.charat(0))else

return

str;

}

我的錯點:

(1)要考慮到二進位制加法和十進位制的加法是同理的,都可以使用取餘和除法來處理!但是進製要使用除法,該位置的值要使用取餘!我開始沒注意到這一點,直接列出了各種情況;

(2)要考慮進製的要求,當進製是1時,哪怕 i 或者 j 都小於0時,也是要計算的!重點:最後一位 的進製!

(3)三目運算子。有一點是很重要:當i < 0時,假設這一位為0,不影響計算;

(4)char和int型別的轉換不能直接進行強轉!最簡單的方法是字元減去『0』 。

之前做過乙個鍊錶求和的問題,那個不是字串,原理相同。

(5)也可以考慮設定result為乙個空串,**:

public string addbinary(string a, string b) 

if('0' == str.charat(0) && str.length() > 1)else

return

str;

}

67 二進位制求和

雖然自己也寫對了,但是 非常不簡潔,還是答案的 簡潔,應該學習下 答案 class solution index 0 找到第乙個不為0的位置 while res index 0 index len index 如果結果為0,就直接返回0 if index len 1 return 0 return ...

67 二進位制求和

給定兩個二進位制字串,返回他們的和 用二進位制表示 輸入為非空字串且只包含數字 1 和 0。示例 1 輸入 a 11 b 1 輸出 100 示例 2 輸入 a 1010 b 1011 輸出 10101 class solution def addbinary self,a str,b str str...

67 二進位制求和

解題思路 1.將兩個字串用0補成長度相等的兩個字串,即比較兩個字串的長度,長度較小的補0 2.準備乙個變數,用來表示當前的進製值,初始值為0 3.遍歷兩個字串,計算當前索引位置兩個字元和進製累加後的結果 4.第3步計算得到的結果對2取餘便是結果字元 實現如下 class solution if le...