【Leetcode】67. Add Binary

来源:互联网 发布:新蒙迪欧数据 编辑:程序博客网 时间:2024/06/08 12:10

原题:

Given two binary strings, return their sum (also a binary string).

For example,
a = "11"
b = "1"
Return "100".


public class Solution {    public String addBinary(String a, String b) {        // String result="";        // int ai=0,bi=0;        // for(int i=a.length()-1,FLAG=1;i>=0;i--){        //     if(a.charAt(i)=='1'){        //         ai=ai+FLAG;        //     }        //     FLAG*=2;        // }        // for(int i=b.length()-1,FLAG=1;i>=0;i--){        //     if(a.charAt(i)=='1'){        //         bi=bi+FLAG;        //     }        //     FLAG*=2;        // }        // int ci=ai+bi;        // while(ci!=0){        //     if(ci%2==0){        //         result+='0';        //     }else{        //         result+='1';        //     }        //     ci/=2;        // }        // return result;        int lenLeft = a.length();        int lenRight = b.length();        StringBuilder c = new StringBuilder();        String left;//被加数        String right;//加数        if(lenLeft >= lenRight){            left= a;            right = b;        }else{            left = b;            right = a;            lenLeft = b.length();            lenRight = a.length();        }                int toAdd = 0;//进位        int l,r,s;        int i, j;        for(i = lenLeft - 1, j = lenRight - 1; i >= 0 && j >= 0; i--, j--){            l = left.charAt(i) - 48;            r = right.charAt(j) - 48;            s = l + r + toAdd;            if(s < 2){                c.insert(0, String.valueOf(s));                toAdd = 0;            }else if(s == 2){                c.insert(0, "0");                toAdd = 1;            }else{                c.insert(0, "1");                toAdd = 1;            }        }        for(; i >= 0; i--){            l = left.charAt(i) - 48;            s = l + toAdd;            if(s!=2){                c.insert(0, String.valueOf(s));                toAdd = 0;            }else{                c.insert(0, "0");                toAdd = 1;            }        }        if(toAdd == 1){            c.insert(0, "1");        }        return c.toString();    }}

其实感觉直接把2个数转成十进制,加了之后再转回二进制是最简单粗暴的方法。。

原创粉丝点击