67. Add Binary
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
class Solution {
public String addBinary(String a, String b) {
int x=BinaryToDecimal(a);
int y=BinaryToDecimal(b);
return Integer.toBinaryString(x+y);
}
public int BinaryToDecimal(String s){
char[] chars=s.toCharArray();
int length=s.length();
int result = 0;
for(int i=0;i<length;i++){
result+=(chars[i]-48)*Math.pow(2, length-i-1);
}
return result;
}
}
二进制过长,如111111111111000001101010,则超过运算限制。
improve:
public class AddBinary {
public String addBinary(String a, String b) {
char[] ca=a.toCharArray();
char[] cb=b.toCharArray();
int la=a.length()-1;
int lb=b.length()-1;
int add=0;
StringBuilder sb=new StringBuilder();
while(la>=0||lb>=0||add==1){
//从最小为开始,进行每次运算
int ta= (la)<0? 0:ca[la--] -'0';
int tb= (lb)<0? 0:cb[lb--] -'0';
//取余为新位
sb.insert(0, (ta+tb+add)%2);
add=(ta+tb+add)/2;
}
return sb.toString();
}
}