把短的串添加0变为一样长度的字符串。
public class Solution {
public String addBinary(String a, String b) {
// Start typing your Java solution below
// DO NOT write main() function
int len_a = a.length();
int len_b = b.length();
if (len_a == 0 && len_b == 0)
return null;
if (len_a == 0)
return b;
if (len_b == 0)
return a;
int max;
StringBuilder sb = new StringBuilder();
StringBuilder ret = new StringBuilder();
if (len_a < len_b) {
for (int i = 0; i < len_b - len_a; i++)
sb.append(0);
sb.append(a);
max = len_b;
a = sb.toString();
} else if (len_a > len_b) {
for (int i = 0; i < len_a - len_b; i++)
sb.append(0);
sb.append(b);
max = len_a;
b = sb.toString();
} else {
max = len_a;
}
int[] c = new int[max];
int t = 0;
int i;
for (i = 0; i < max; i++) {
char ca = a.charAt(max - i - 1);
char cb = b.charAt(max - i - 1);
if (ca == '1' && cb == '1') {
c[i] = t;
t = 1;
}
if ((ca == '1' && cb == '0') || (ca == '0' && cb == '1')) {
c[i] = (t + 1) % 2;
if (t == 0)
t = 0;
else
t = 1;
}
if (ca == '0' && cb == '0') {
c[i] = t;
t = 0;
}
}
if (t == 1) {
ret.append(1);
}
for (i = max - 1; i >= 0; i--)
ret.append(c[i]);
return ret.toString();
}
public static void main(String[] args) {
Solution aa = new Solution();
System.out.println(aa.addBinary("11", "1"));
}
}