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(); } }