题目:
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
从后往前遍历计算即可,注意进位的情况,尤其是最高位的进位。
Tips:Java中String 和 char[]的互相转换:
String-->>char[] :"a string".toCharArray ;
char[] -->> String:char[] aca; String.valueOf(aca);
代码如下:
public class Solution {
public String addBinary(String a, String b) {
int lengthA = a.length();
int lengthB = b.length();
if(lengthA < lengthB)
return addBinary(b,a);
// lengthA >= lengthB
for(int i=lengthA-lengthB;i > 0;i--){
b = "0" + b;
}
char[] aca = a.toCharArray();
char[] acb = b.toCharArray();
int carry = 0;
for(int i=aca.length - 1;i>=0;i--){
int sum = aca[i]-'0' + acb[i] - '0' + carry;
switch(sum){
case 0 :
aca[i] = '0';
break;
case 1 :
aca[i] = '1';
carry = 0;
break;
case 2:
aca[i] = '0';
carry = 1;
break;
case 3 :
aca[i] = '1';
carry = 1;
break;
}
}
String ret = "";
if(carry > 0){
ret += "1";
}
ret += String.valueOf(aca);
return ret;
}
}