leetcode试题之二进制加法--java实现

来源:互联网 发布:sql 查询 having 范围 编辑:程序博客网 时间:2024/06/10 07:26
/*本题的需求是:给出两个字符串,内容是二进制数字,编写计算两个二进制数字和的程序。难点是考虑周到,尤其是最后的一个进位,容易遗忘。*/import java.util.ArrayList;class AddBinary{public static void main(String args[]){    AddBinary addBinary = new AddBinary();    addBinary.AddBinary("11011","11101");}public String AddBinary(String a,String b){    int aLength = a.length();    int bLength = b.length();    String result = "";     ArrayList<Integer> aList = new ArrayList<Integer>();    ArrayList<Integer> bList = new ArrayList<Integer>();    for(int i =0;i<aLength;i++){aList.add(0,Integer.parseInt(a.substring(i,i+1)));}for(int j =0;j<bLength;j++){bList.add(0,Integer.parseInt(b.substring(j,j+1)));}        int k =0;    int plugnum =0;    while(k<aLength && k<bLength)    {        int a1 = aList.get(k);        int b1 = bList.get(k);        int sum = a1 + b1 +plugnum;                if(sum>=2)        {            sum = sum % 2;            result = String.valueOf(sum)+result;            plugnum = 1;        }        else        {            result = String.valueOf(sum)+result;        }        k++;           }    if(k<aLength)    {        int i =k;        int a2 = aList.get(i);        int sum = a2 + plugnum;        if(sum>=2)        {            sum = sum % 2;            result = String.valueOf(sum)+result;            plugnum =1;        }        else        {            result = String.valueOf(sum)+result;        }        i++;    }    if(k<bLength)    {   int i =k;        int b2 = bList.get(i);        int sum = b2 + plugnum;        if(sum>=2)        {            sum = sum%2;            result = String.valueOf(sum)+result;            plugnum=1;        }        else        {            result = String.valueOf(sum)+result;        }        i++;    }    //这一段代码是最后的进位:    if(plugnum == 1)    {           result = String.valueOf(plugnum)+result;    }    System.out.println("二进制数字的和是:");    System.out.println(result);    return result;}}





java AddBinary二进制数字的和是:111000






0 0
原创粉丝点击