class solution{
public String addBinary(String a, String b){
StringBuilder ans = new StringBuilder();
int tem = 0;
for(int i=a.length()-1, y=b.length()-1; i>=0 || y>=0; i--, y--){
int sum = tem;
sum += i>=0 ? a.charAt(i)-'0' : 0;
sum += y>=0 ? b.charAt(y)-'0' : 0;
ans.append(sum%2);
tem = sum/2;
}
ans.append(tem==1 ? "1" : "");
return ans.reverse().toString();
}
}
同时从后向前遍历两个字符串,当i和y都大于等于0时,sum取本位。由于ASCII码字符1和字符0相差一,所以通过a.charAt(i)-'0’的方式获取字符相应的整数形式。因为从后向前运算,两位如果都为1则进一位,所以将sum%2的值添加到ans中,然后用tem代表向前进一位的值。退出循环时,在做一次判断,看是否需要在前面补位。最后将字符串翻转输出即可。