leetcode 0067
说明
只是为了记录一下,不求多快,也不深究。
会简要描述思路,代码中不写注释。
如碰到不会做的用了别人代码会在博客中标出。
题目描述
思路
跟以前模拟加法那题一样,只不过逢二进一。
public String addBinary(String a, String b) {
if (a.equals(b) && a.equals("0")) {
return a;
}
String big = a.length() > b.length() ? a : b;
String small = a.length() <= b.length() ? a : b;
boolean flag = false;
StringBuilder sb = new StringBuilder();
for (int i = big.length() - 1, j = small.length() - 1; i >= 0; i--, j--) {
if (j < 0) {
if (flag) {
if (big.charAt(i) == '1') {
sb.insert(0, '0');
} else {
sb.insert(0, '1');
flag = false;
}
} else {
sb.insert(0, big.charAt(i));
}
continue;
}
if (big.charAt(i) == '1' && small.charAt(j) == '1') {
if (flag) {
sb.insert(0, '1');
} else {
sb.insert(0, '0');
flag = true;
}
flag = true;
} else if (big.charAt(i) != small.charAt(j)) {
if (flag) {
sb.insert(0, '0');
} else {
sb.insert(0, '1');
}
} else {
if (flag) {
sb.insert(0, '1');
flag = false;
} else {
sb.insert(0, '0');
}
}
}
if (flag) {
sb.insert(0, '1');
}
return sb.toString();
}