版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載贯卦。
難度:容易
要求:
給定兩個二進制字符串盼铁,返回他們的和(用二進制表示)。
樣例
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 = "";//返回結(jié)果
while(pb >= 0){
int sum = (int)(a.charAt(pa) - '0') + (int)(b.charAt(pb) - '0') + carries;
rst = String.valueOf(sum % 2) + rst;//取當(dāng)前位數(shù)
carries = sum / 2;//取進位數(shù)
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;
}
}