Java程式碼 實現兩個二進位制數的加法
堅持堅持! 題目要求求兩個二進位制數的加法
演算法思路:1、要定義幾個引數,carry代表進位,opa代表陣列a的元素轉換成數字,opb代表陣列b的元素轉換成數字。sum代表陣列的和
2、判斷兩個字串是否長度相同,如果不同的要從左補齊。
3、兩個字串對齊之後,進行一個for迴圈,迴圈從字串最後一位到第一位,分別對應相加,如果加和等於2的話就該位變為0,進位標誌位carry為1,如果加和為1,進位為0
4、利用Java中StringBuilder的字串具有可變長度的性質,利用append方法將sum連線起來。
5、最後如果carry為1的話則字串繼續append("1")
6、最後一步,利用reverse方法將字串反轉。
Java程式碼如下:
public class Solution {
public String addBinary(String a, String b) {
int carry=0;
int sum=0;
int opa=0;
int opb=0;
StringBuilder result=new StringBuilder();
while(a.length()!=b.length()){
if(a.length()>b.length()){
b="0"+b;
}else{
a="0"+a;
}
}
for(int i=a.length()-1;i>=0;i--){
opa=a.charAt(i)-'0';
opb=b.charAt(i)-'0';
sum=opa+opb+carry;
if(sum>=2){
result.append((char) (sum-2 +'0'));
carry=1;
}else{
result.append((char) (sum +'0'));
carry=0;
}
}
if(carry==1){
result.append("1");
}
return result.reverse().toString();
}
}