Easy 67题 Add Binary

来源:互联网 发布:国际网络电话软件排名 编辑:程序博客网 时间:2024/05/29 02:36

Question:

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

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


Solution:

public class Solution {    public String addBinary(String a, String b) {        StringBuilder sb=new StringBuilder();        int flag=0;        int i=a.length();        int j=b.length();        int first=0;        int second=0;        int enda=0;        int endb=0;        for(;i>=0&&j>=0;)        {            if(i==0){                first=0;                enda=1;            }            else{                first=Integer.valueOf(a.substring(i-1,i));                i--;            }                            if(j==0){                second=0;                endb=1;            }            else{                 second=Integer.valueOf(b.substring(j-1,j));                j--;            }            if(enda+endb==2)                break;            Integer tmp=(first^second)^flag;            sb.insert(0, tmp.toString());            if(first+second+flag>=2)                flag=1;            else                flag=0;        }        if(flag==1)            sb.insert(0,"1");        return sb.toString();    }}
另一种discussion上的简化写法,注意循环条件的变化

        StringBuilder sb=new StringBuilder();        int i=a.length()-1;        int j=b.length()-1;        int carry=0;        while(i>=0||j>=0)        {            int sum = carry;            if (j >= 0) sum += b.charAt(j--) - '0';            if (i >= 0) sum += a.charAt(i--) - '0';            sb.insert(0,sum%2);            carry=sum/2;        }        if(carry!=0)            sb.insert(0,'1');        return sb.toString();



0 0