Add Binary 将二进制数相加

来源:互联网 发布:mac下完jdk怎么用 编辑:程序博客网 时间:2024/04/29 20:54

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

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

这个还是基础的加法运算。

唯一要注意的就是进位。

运行时间:


代码:

    public String addBinary(String a, String b) {        StringBuilder sb = new StringBuilder();        int i = a.length() - 1;        int j = b.length() - 1;        int add = 0;        int result = 0;        while (i >= 0 && j >= 0) {            result = a.charAt(i) - '0' + b.charAt(j) - '0' + add;            sb.insert(0, (char) (result%2 + '0'));            add = result / 2;            i--;            j--;        }        while (i >= 0) {            result = a.charAt(i) - '0' + add;            sb.insert(0, (char) (result%2 + '0'));            add = result / 2;            i--;        }        while (j >= 0) {            result = b.charAt(j) - '0' + add;            sb.insert(0, (char) (result%2 + '0'));            add = result / 2;            j--;        }        if (add == 1) {            sb.insert(0, '1');        }        return sb.toString();    }

这个代码有点繁琐,更加紧凑的代码:

public class AddBinary {    public String addBinary(String a, String b) {        StringBuilder sb = new StringBuilder();        int i = a.length() - 1;        int j = b.length() - 1;        int add = 0;        int result = 0;        while (i >= 0 || j >= 0) {            result = add;            if (i >= 0) {                result += a.charAt(i) - '0';            }            if (j >= 0) {                result += b.charAt(j) - '0';            }            sb.insert(0, result%2);            add = result / 2;            i--;            j--;        }        if (add == 1) {            sb.insert(0, '1');        }        return sb.toString();    }}

1 0
原创粉丝点击