給定兩個二進位制字串,返回他們的和(用二進位制表示)。
輸入為非空字串且只包含數字 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...