给你两个二进制字符串 a
和 b
,以二进制字符串的形式返回它们的和
public class Solution67 {
public static String addBinary(String a, String b) {
int flag=0;
int i=a.length()-1;
int j=b.length()-1;
String res="";
//分俩个指针遍历两个字符串
// 记住我们不能忽略较长的那部分
for(;i>=0||j>=0;){
int num=0;
//如果
//11110
//....1
if(i>=0){
num+=a.charAt(i)-'0';
} else {num=num+0;}
//这里的else的存在相当于补全了0但写出来很多余于是可以简化成下面那句
if(j>=0)num+=b.charAt(j)-'0';
//num在人类大脑的感觉里就应该是该位上两个加数的加和加上进位flag对吧,加数加和我们在上两步做到1
num+=flag;
//好家伙,现在我们来看看这个位置产不产生flag进位把
flag=num/2;
//现在该位底剩下什么呢,那就是取模剩下的了
num=num%2;
//我们得到改位是个数字题目要我们返回字符串啊咋办
//我surfing in Internet了下,发现装箱之后的数字可以转成字符串
Integer itg=num;
//为啥toString写在前面呀,因为我们算加法是从后往前的吧,那必然得把新搞出来的写前面吧
res=itg.toString()+res;
i--;
j--;
}if(flag==1){
//老问题算到第一位依然要进位怎么办,那就是前面给他加一位一嘛进位又不能进2不是吗》
res='1'+res;
}
return res;
}
public static void main(String[] args) {
System.out.println(addBinary("11","11"));
}
}
装箱操作参考文献(69条消息) Java数字、字符、字符串互相转换_有时候我也会的博客-优快云博客_java数据转字符串