如何将两个大的二进制字符串相加? java中有内置函数还是我必须手动执行?

问题描述 投票:0回答:1

https://leetcode.com/problems/add-binary/

我尝试使用 String.parseInt(stringname,2) 将字符串转换为整数并添加数字,然后我尝试返回 Integer.toBinaryString(sum)。但是对于大字符串,我收到错误。

class Solution {
    public String addBinary(String a, String b) {
        int n1=Integer.parseInt(a,2);
        int n2=Integer.parseInt(b,2);
        int n=n1+n2;
        return Integer.toBinaryString(n);
    }
}
java string bit
1个回答
0
投票

这是一个例子。

String addBinary(String a, String b) {
    StringBuilder s = new StringBuilder();
    char[] A = a.toCharArray();
    char[] B = b.toCharArray();
    boolean r = false;
    int p, q, n = Math.max(p = A.length, q = B.length);
    for (int i = 0; i < n; i++) {
        char g = '0';
        char h = '0';
        if (i < p) g = A[p - 1 - i];
        if (i < q) h = B[q - 1 - i];
        if (g == '1' && h == '1')
            if (r) s.insert(0, '1');
            else {
                s.insert(0, '0');
                r = true;
            }
        else if (g == '0' && h == '0')
            if (!r) s.insert(0, '0');
            else {
                s.insert(0, '1');
                r = false;
            }
        else s.insert(0, r ? '0' : '1');
        if (i + 1 == n && r) s.insert(0, '1');
    }
    return s.toString();
}

运行时间:1 ms,比 Add Binary 的 Java 在线提交的100.00%还要快。
内存使用量:41.1 MB,低于 Java 在线提交的 Add Binary 的 70.13%

© www.soinside.com 2019 - 2024. All rights reserved.