LCR 002. 二進制求和
- 方法一
- 方法二
- 遺落知識點
- 字符串長度
- string
- StringBuffer && StringBuilder
方法一
轉換成十進制數,求和之后再轉換成二進制數
class Solution {public String addBinary(String a, String b) {return Integer.toBinaryString(Integer.parseInt(a, 2) + Integer.parseInt(b, 2));}
}
沒考慮到一個大于0 一個小于零int tmp = (a[i]-‘0’) + (b[j]-‘0’)
String res = ‘’; error: empty character literal
方法二
B站講解視頻 和 力扣題解別人的答案 都用了這種方法,但目前已經超時。暫時還沒找到可以執行的方法。
class Solution {public String addBinary(String a, String b) {StringBuffer res = new StringBuffer();int carry = 0; //進位int i = a.length() - 1;int j = a.length() - 1;while(i>=0 || j>=0 || carry!=0) {if(i>=0) carry+=a.charAt(i)-'0';if(j>=0) carry+=b.charAt(j)-'0';res.insert(0, carry%2);//res = String.valueOf(tmp%2)+res;carry = carry/2;}return res.toString();}
}
遺落知識點
字符串長度
字符串長度str.length()
string
- java中 string不可以看作數組
String是使用char數組來存儲數據,并且是使用final修飾的,所以String的值一經定義是不可變的
- 訪問string中某一個位置的字符 charAt
StringBuffer && StringBuilder
如果想要可變字符,使用StringBuilder(可變字符序列,效率高,線程不安全)、StringBuffer(可變字符序列,效率低,線程安全)
以StringBuffer為例。
-
public StringBuffer append(String str):可以把任意類型數據添加到字符串緩沖區里面,并返回字符串緩沖區本身
-
public StringBuffer insert(int offset,String str):在指定位置把任意類型的數據插入到字符串緩沖區里面,并返回字符串緩沖區本身