二進制求和
給定兩個二進制字符串,返回他們的和(用二進制表示)。
輸入爲非空字符串且只包含數字 1 和 0。
示例 1:
輸入: a = “11”, b = “1”
輸出: “100”
示例 2:
輸入: a = “1010”, b = “1011”
輸出: “10101”
解題思路
對兩個字符串從後向前相加,每一位相加的結果,模2(%2)作爲結果添加到已有結果的前面,除以2(/2)作爲進位保存起來,用於下一位相加,一直到最長字符串的第一個字符相加完結束,返回結果即可。
AC代碼
public String addBinary(String a, String b) {
int aLength = a.length();
int bLength = b.length();
int carry = 0;
String result = "";
while (aLength > 0 || bLength > 0) {
if (aLength > 0) {
carry = carry + a.charAt(aLength - 1) - '0';
aLength--;
}
if (bLength > 0) {
carry = carry + b.charAt(bLength - 1) - '0';
bLength--;
}
result = (carry % 2) + result;
carry = carry / 2;
}
if (carry > 0) {
result = carry + result;
}
return result;
}