提交代码:
class Solution {
public String addBinary(String a, String b) {
int numA,numB,carry=0;
int p1=a.length()-1,p2=b.length()-1;
List<Character> tmp=new ArrayList<Character>();
while(p1>=0&&p2>=0) {
numA=a.charAt(p1)-'0';
numB=b.charAt(p2)-'0';
if(numA+numB+carry==0) {
tmp.add('0');
carry=0;
}else if(numA+numB+carry==1) {
tmp.add('1');
carry=0;
}else if(numA+numB+carry==2){
tmp.add('0');
carry=1;
}else {
tmp.add('1');
carry=1;
}
p1--;p2--;
}
while(p1>=0) {
numA=a.charAt(p1)-'0';
if(numA+carry==0) {
tmp.add('0');
carry=0;
}else if(numA+carry==1) {
tmp.add('1');
carry=0;
}else {
tmp.add('0');
carry=1;
}
p1--;
}
while(p2>=0) {
numB=b.charAt(p2)-'0';
if(numB+carry==0) {
tmp.add('0');
carry=0;
}else if(numB+carry==1) {
tmp.add('1');
carry=0;
}else {
tmp.add('0');
carry=1;
}
p2--;
}
if(carry==1)
tmp.add('1');
String ans="";
for(int i=tmp.size()-1;i>=0;i--)
ans+=tmp.get(i);
return ans;
}
}
运行结果:

本文介绍了一种实现二进制字符串相加的算法,通过遍历两个输入字符串并处理进位,最终得到二进制和的字符串表示。算法详细展示了如何处理不同长度的字符串,并确保了正确的进位处理。
7612

被折叠的 条评论
为什么被折叠?



