二進位制求和

2021-09-08 12:30:23 字數 1096 閱讀 6287

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

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

示例 1:

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

輸出: 「100」

示例 2:

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

輸出: 「10101」

(1)使用jdk進製轉化

1,第一時間想到使用jdk自帶方法,將給定的二進位制數轉化為十進位制;

2,然後相加,然後將和重新轉化為二進位制即可;

3,想的很簡單,實現也簡單,但是不管是有integer或者long都是有範圍的,超出的話肯定會報錯,果然拋異常numberformatexception;

class solution 

//運用jdk自帶進製轉換,將二進位制字串轉換為10禁止相加在轉換

//數字過大會超出取值範圍,拋異常numberformatexception,不可取

private string add1(string a, string b)

}

(2)逐位相加

1,將給定的兩個字串轉化成字元陣列,然後從最後開始逐個相加,將結果存入到結果陣列中;

2,牢記字元』0』的ascii是48,然後遍歷陣列,將對應位的字元轉化為數字然後相加,最後再將數字轉化成字元存到結果陣列中;

3,注意進製的標記,有進製相加時多加1,沒有則不用,每一位的相加都要判斷是否有進製;

4,當遍歷完成後,記得還要判斷是否有進製,如果有,則將結果陣列[0]值為1,如果沒有,那則將第乙個元素截掉,在轉化成字串輸出即可;

class solution 

//那就使用簡單思路,逐位相加

private string add2(string a, string b) else

} else else }}

//最後還有進製

if (carry) else

return new string(res,1,res.length-1);//最後乙個引數是生成子陣列的長度

}}

注意:字元和數字之間對應的關係,轉換以防出錯即可!

二進位制求和

給定兩個二進位制字串,返回他們的和 用二進位制表示 輸入為非空字串且只包含數字 1 和 0。示例 1 輸入 a 11 b 1 輸出 100 示例 2 輸入 a 1010 b 1011 輸出 10101 最直觀的解法 public string addbinary string a,string b ...

二進位制求和

給定兩個二進位制字串,返回他們的和 用二進位制表示 輸入為非空字串且只包含數字 1 和 0。str儲存了所有a b的累加值。for int k str.length 1 k 0 k 在累加過程中會出現值為3的位子,則將本位子置1,然後進1 if str.charat k 3 第乙個位子若產生進製需要...

二進位制求和

三個版本 class solution if res 0 2 else return res 沒有考慮到會出現3的結果,不只是首位,中間也可以 class solution for int i res.length 1 i 0 i if res 0 2 else return res class s...