题意:给定两个二进制字符串,返回它们的二进制和字符串。
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10(进位)
=> sum%2 是运算结果,
sum/2是进位。
加法就是 a = b + c (c是进位)
所以:先找出哪一条更长,遍历长的。
public class Solution {
public String addBinary(String a, String b) {
char[] big;
char[] small;
int s = 0;
int c = 0;
int sum = 0;
if(a.length() >= b.length())
{
big = a.toCharArray();
small = b.toCharArray();
}
else
{
big = b.toCharArray();
small = a.toCharArray();
}
for (int i = 0 ; i < big.length ; i++){
if(i < small.length)
s = small[small.length-1-i];
else
s = '0';
sum = (big[big.length-1-i]-'0') +(s-'0')+ c;
big[big.length-1 - i] = (char)((sum%2)+'0');
c = sum/2;
}
if (c == 0)
return new String(big);
else if(c == 1)
return "1" + new String(big);
}
}