题意:给定两个二进制字符串,求两数相加得到二进制数的字符串序列
思路:记录进位标记,从后往前按位相加判断是否进位即可
class Solution {
public String addBinary(String a, String b) {
int n = a.length(), m = b.length(), i = n-1, j = m-1;
String ans = "";
boolean flag = false;
while (i >= 0 || j >= 0) {
if (i < 0) {
if (flag) {
if (b.charAt(j--) == '1') {
ans = '0' + ans;
} else {
ans = '1' + ans;
flag = false;
}
} else {
ans = b.charAt(j--) + ans;
}
continue;
} else if (j < 0) {
if (flag) {
if (a.charAt(i--) == '1') {
ans = '0' + ans;
} else {
ans = '1' + ans;
flag = false;
}
} else {
ans = a.charAt(i--) + ans;
}
continue;
}
if (a.charAt(i) == '1' && b.charAt(j) == '1') {
if (flag) {
ans = '1' + ans;
} else {
ans = '0' + ans;
flag = true;
}
} else if (a.charAt(i) == '1' || b.charAt(j) == '1') {
if (flag) {
ans = '0' + ans;
} else {
ans = '1' + ans;
}
} else {
if (flag) {
ans = '1' + ans;
flag = false;
} else {
ans = '0' + ans;
}
}
i--;j--;
}
if (flag) {
ans = '1' + ans;
}
return ans;
}
}