leetcode:Add Binary

来源:互联网 发布:周克华事件真相知乎 编辑:程序博客网 时间:2024/06/05 01:08

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) {        char cha[] = a.toCharArray();        char chb[] = b.toCharArray();        char ans[] = new char[(cha.length > chb.length ? cha.length : chb.length) + 1];        char flag = '0';        int alen = cha.length - 1;        int blen = chb.length - 1;        int anslen = ans.length - 1;        while(alen >= 0 && blen >= 0){            ans[anslen] = getCur(cha[alen], chb[blen], flag);            flag = getFlag(cha[alen], chb[blen], flag);            --blen;            --alen;            --anslen;        }        if(alen < 0){            while(blen >= 0){                ans[anslen--] = getCur('0', chb[blen], flag);                flag = getFlag('0', chb[blen--], flag);            }        }        if(blen < 0){            while(alen >= 0){                ans[anslen--] = getCur('0', cha[alen], flag);                flag = getFlag('0', cha[alen--], flag);            }        }        ans[anslen] = flag;        int startindex = 0;        while(startindex  < ans.length && ans[startindex] == '0'){            ++startindex;        }        return startindex == ans.length ? new String("0") : new String(ans, startindex, ans.length - startindex);    }        public char getCur(char a, char b, char c){        return (char)((a + b + c - 3 * Integer.valueOf('0')) % 2 + '0');    }        public char getFlag(char a, char b, char c){        return (char)((a + b + c - 3 * Integer.valueOf('0')) / 2 + '0');    }    }


0 0
原创粉丝点击