给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。
示例 1:
输入:a = “11”, b = “1” 输出:“100”
示例 2:输入:a = “1010”, b = “1011” 输出:“10101”
思路:
用一个index(初始化为0)来表示进位,从字符串末端开始往前遍历,如果都是1,1 ,相加为2,那么需要进位1,当前位置是所加的再加上进位Index的值最后%2就是最终的,最后index更新为index/2,
class Solution {
public String addBinary(String a, String b) {
//利用stringbuffer字符串可变
StringBuilder sum= new StringBuilder();
int i=a.length()-1;
int j=b.length()-1;
//计算进位的
int index=0;
while(i>=0||j>=0||index!=0){
if(i>=0){
index +=a.charAt(i--)-'0';
}
if(j>=0){
index += b.charAt(j--)-'0';
}
sum.append(index%2);
//下一个的进位
index /=2;
}
return sum.reverse().toString();
}
}