https://leetcode.com/problems/add-binary/
分別從最後面開始取字符,一直往前取,如果其中一個長一個短,那麼短的那個取到的就是0,然後分別考慮 00 11 01 的情況,裏面分別對是否有進位進行處理。就可以了。
class Solution {
public String addBinary(String a, String b) {
StringBuilder sb = new StringBuilder();
boolean isCarry = false;
int lenA = a.length();
int lenB = b.length();
for (int i = 0; i < Math.max(lenA, lenB); i++) {
final char ai = (lenA - i - 1) < 0 ? '0' : a.charAt(lenA - i - 1);
final char bi = (lenB - i - 1) < 0 ? '0' : b.charAt(lenB - i - 1);
char x = '0';
if (ai == '0' && bi == '0') {
if (isCarry) {
x = '1';
isCarry = false;
} else {
x = '0';
}
} else if (ai == '1' && bi == '1') {
if (isCarry) {
x = '1';
} else {
x = '0';
}
isCarry = true;
} else {
if (isCarry) {
x = '0';
} else {
x = '1';
}
}
sb.insert(0, x);
}
if (isCarry) {
sb.insert(0, '1');
}
return sb.toString();
}
}