版权声明:本文为博主原创文章,未经博主允许不得转载。
难度:容易
要求:
给定两个二进制字符串,返回他们的和(用二进制表示)。
样例
a = 11
b = 1
返回 100
思路:
解题容易,注意边界处理。
public class Solution {
/**
* @param a a number
* @param b a number
* @return the result
*/
public String addBinary(String a, String b) {
if(a.length() < b.length()){//长的换到左边
String tmp = a;
a = b;
b = tmp;
}
int pa = a.length() - 1;
int pb = b.length() - 1;
int carries = 0;//进位
String rst = "";//返回结果
while(pb >= 0){
int sum = (int)(a.charAt(pa) - '0') + (int)(b.charAt(pb) - '0') + carries;
rst = String.valueOf(sum % 2) + rst;//取当前位数
carries = sum / 2;//取进位数
pa --;
pb --;
}
while(pa >= 0){
int sum = (int)(a.charAt(pa) - '0') + carries;
rst = String.valueOf(sum % 2) + rst;
carries = sum / 2;
pa --;
}
if (carries == 1){
rst = "1" + rst;
}
return rst;
}
}