Given two binary strings, return their sum (also a binary string).
For example,a = "11",b = "1",Return "100".app
這道題就是求兩個表示爲字符串形式的二進制數字的和。ui
最初個人想法是直接對兩個字符串相對應的位進行直接運算,再用一個變量來表示進位,這裏我選擇將較短的字符串前面用0補位,以得到兩個相同長度的字符串進行逐位運算。code
但其實不須要補位字符串
下面貼出來的代碼用了三元表達式進行判斷,若是相應長度有數字就取出數字,若是沒有數字則賦值爲0 get
隨後對ab字符串的相同位置,以及進位的值進行異或運算string
public class Solution { public String addBinary(String a, String b) { if(a == null || a.isEmpty()) { return b; } if(b == null || b.isEmpty()) { return a; } char[] aArray = a.toCharArray(); char[] bArray = b.toCharArray(); StringBuilder stb = new StringBuilder(); int i = aArray.length - 1; int j = bArray.length - 1; int aByte; int bByte; int carry = 0; int result; while(i > -1 || j > -1 || carry == 1) { aByte = (i > -1) ? Character.getNumericValue(aArray[i--]) : 0; bByte = (j > -1) ? Character.getNumericValue(bArray[j--]) : 0; result = aByte ^ bByte ^ carry; carry = ((aByte + bByte + carry) >= 2) ? 1 : 0; stb.append(result); } return stb.reverse().toString(); } }