1. 程式人生 > >Java程式碼 實現兩個二進位制數的加法

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();
    }
}