给定两个二进制字符串,返回他们的和(用二进制表示)。
样例
a = 11
b = 1
样例
a = 11
b = 1
返回 100
import java.util.Scanner;
import java.util.Stack;
/**
* 给定两个二进制字符串,返回他们的和(用二进制表示)。
样例
a = 11
b = 1
返回 100
*
* @author Dell
*
*/
public class Test408 {
public static String addBinary(String a, String b)
{
if(a.equals(" "))
return b;
if(b.equals(" "))
return a;
if(a.length()<b.length())
{
String temp=a;
a=b;
b=temp;
}
Stack<Integer> s=new Stack<>();
int c=0;
for(int i=b.length()-1;i>=0;i--)
{
int temp=(a.charAt(a.length()-b.length()+i)-'0')+(b.charAt(i)-'0');
if(c==1)
{
temp=temp+1;
c=0;
}
if(temp==2)
{
c=1;
temp=0;
}
if(temp==3)
{
c=1;
temp=1;
}
s.push(temp);
}
for(int i=a.length()-b.length()-1;i>=0;i--)
{
int temp=a.charAt(i)-'0';
if(c==1)
{
temp=temp+1;
c=0;
}
if(temp==2)
{
temp=0;
c=1;
}
if(temp==3)
{
c=1;
temp=1;
}
s.push(temp);
}
if(c==1)
{
s.push(1);
}
StringBuilder sb=new StringBuilder();
while(s.isEmpty()!=true)
{
sb.append(s.pop());
}
return sb.toString();
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String a=sc.nextLine();
String b=sc.nextLine();
System.out.println(addBinary(a,b));
}
}