Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
For example,
a = "11"
b = "1"
Return "100".
分析:
用栈存储中间结果。
这个代码写得不好,有空改进。
public class Solution {
public String addBinary(String a, String b) {
if(a == null || b == null || a.length()==0 || b.length()==0)
return null;
int i = a.length()-1;
int j = b.length()-1;
Stack<Character> st = new Stack<Character>();
int p1, p2;
int sum, carry=0;
while(i>=0 || j>=0){
if(i<0){
p1 = 0;
p2 = b.charAt(j)-48;
}else if(j<0){
p1 = a.charAt(i)-48;
p2 = 0;
}else{
p1 = a.charAt(i)-48;
p2 = b.charAt(j)-48;
}
sum = p1+p2+carry;
if(sum == 0){
st.push('0');
carry=0;
}else if(sum==1){
st.push('1');
carry=0;
}else if(sum == 2){
st.push('0');
carry = 1;
}else if(sum == 3){
st.push('1');
carry = 1;
}
i--;
j--;
}
if(carry == 1)
st.push('1');
StringBuffer sb = new StringBuffer();
while(!st.empty())
sb.append(st.pop());
return sb.toString();
}
}