import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param a string字符串 * @param b string字符串 * @return string字符串 */ public String addBinary (String a, String b) { // write code here StringBuilder stringBuffer1 = new StringBuilder(a); StringBuilder stringBuffer2 = new StringBuilder(b); String string1 = stringBuffer1.reverse().toString(); String string2 = stringBuffer2.reverse().toString(); int index1 = 0; int index2 = 0; int left = 0; StringBuilder result = new StringBuilder(); while (index1 < string1.length() && index2 < string2.length()) { int value = string1.charAt(index1) - '0' + string2.charAt(index2) - '0' + left; left = value - 2 >= 0 ? 1 : 0; result.append(value % 2); index1++; index2++; } while (index1 < string1.length()) { int value = string1.charAt(index1) - '0' + left; left = value - 2 >= 0 ? 1 : 0; result.append(value % 2); index1++; } while (index2 < string2.length()) { int value = string2.charAt(index2) - '0' + left; left = value - 2 >= 0 ? 1 : 0; result.append(value % 2); index2++; } if (left == 1) { result.append(left); } return result.reverse().toString(); } }
本题考察的知识点是编码相加,所用编程语言是java。
两个编码相加是从右往左逐一相加,结果满2进1。所以我们将两个字符串先逆置,然后两者相加,将结果逐一存储在StringBuffer中,最后将StringBuffer逆置返回