题目:
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
和十进制的字符串加法一样,需要一个记录进位的int数c,初始值为0,从两者字符串的末尾开始,如果c = (a+b)/ 2,保存余数,直到a,b的数字都用完。
最后还需要把结果处理一下,即去除高位无效的0。
public class No65_AddBinary {
public static void main(String[] args){
System.out.println(addBinary("0", "0"));
}
public static String addBinary(String a, String b) {
int ai = a.length() - 1;
int bi = b.length() - 1;
String ret = "";
int c = 0;
while(ai>=0 && bi>=0){
int sum = a.charAt(ai)-'0' + b.charAt(bi)-'0' + c;
c = sum / 2;
sum = sum % 2;
ret = ""+sum+ret;
ai--;
bi--;
}
if(ai < 0){
while(bi >= 0){
int sum = b.charAt(bi)-'0' + c;
c = sum / 2;
sum = sum % 2;
ret = ""+sum+ret;
bi--;
}
}
if(bi < 0){
while(ai >= 0){
int sum = a.charAt(ai)-'0' + c;
c = sum / 2;
sum = sum % 2;
ret = ""+sum+ret;
ai--;
}
}
if(c == 1) ret = "1"+ret;
int i = 0;
while(ret.charAt(i) == '0' && i<ret.length()-1) i++;
return ret.substring(i);
}
}