题目:
Given two binary strings, return their sum (also a binary string).
The input strings are both non-empty and contains only characters 1
or 0
.
Example 1:
Input: a = "11", b = "1" Output: "100"
Example 2:
Input: a = "1010", b = "1011" Output: "10101"
AC:
class Solution {
public String addBinary(String a, String b) {
int lenMax = a.length() > b.length() ? a.length() : b.length();
char[] result = new char[lenMax];
int indexA = a.length() - 1;
int indexB = b.length() - 1;
int index = lenMax - 1;
int addFlag = 0;
while (indexA >= 0 && indexB >= 0) {
int tmp = a.charAt(indexA) - '0' + b.charAt(indexB) - '0' + addFlag;
result[index] = (char)(tmp % 2 + '0');
addFlag = tmp >> 1;
indexA--;
indexB--;
index--;
}
while (indexA >= 0) {
int tmp = a.charAt(indexA) - '0' + addFlag;
result[index] = (char)(tmp % 2 + '0');
addFlag = tmp >> 1;
indexA--;
index--;
}
while (indexB >= 0) {
int tmp = b.charAt(indexB) - '0' + addFlag;
result[index] = (char)(tmp % 2 + '0');
addFlag = tmp >> 1;
indexB--;
index--;
}
return 1 == addFlag ? "1" + String.valueOf(result) : String.valueOf(result);
}
}