The idea is to loop both Strings and add each individual char. Just notice to pick up remaining String1 or String2, and even after all, check the carry on digit (next as below) if it is 1, if so add one more.
public class Solution {
public String addBinary(String a, String b) {
if(a ==null || b == null){
return a + b;
}
int indexA = a.length() - 1;
int indexB = b.length() - 1;
int next = 0;
StringBuilder result = new StringBuilder();
while(indexA >= 0 && indexB >= 0){
int curSum = a.charAt(indexA) + b.charAt(indexB) + next;
if(curSum > 97){
next = 1;
result.insert(0, (char)(curSum - 48 - 2));
}else{
next = 0;
result.insert(0, (char)(curSum - 48));
}
indexA--;
indexB--;
}
while(indexA >= 0){
int curSumA = a.charAt(indexA) + next;
if(curSumA > 49){
next = 1;
result.insert(0, (char) (curSumA - 2));
}else{
next = 0;
result.insert(0, (char) curSumA);
}
indexA--;
}
while(indexB >= 0){
int curSumB = b.charAt(indexB) + next;
if(curSumB > 49){
next = 1;
result.insert(0, (char) (curSumB - 2));
}else{
next = 0;
result.insert(0, (char) curSumB);
}
indexB--;
}
if(next == 1){
result.insert(0, (char) 49);
}
return result.toString();
}
}
没有评论:
发表评论