gpt4 book ai didi

java - 这个特定的测试用例如何返回空字符串

转载 作者:行者123 更新时间:2023-11-30 05:35:43 25 4
gpt4 key购买 nike

我编写了一些用于添加两个二进制数的代码。对于所有其他测试用例,它运行良好,但对于这个特定的测试用例,它返回一个空字符串。

num() 将二进制字符串转换为整数。 bin() 将数字转换为二进制字符串。

public class Solution {
public String addBinary(String A, String B) {
long result1=num(A)+num(B);
return bin(result1);
}
public long num(String A){
long result=0;
for(int i =0;i<A.length();i++){
long num1=Character.getNumericValue(A.charAt(i));
result+=num1*(long)Math.pow(2,A.length()-1-i);
}
return result;
}
public String bin(long A){
StringBuilder sb = new StringBuilder();
while(A>0){
sb.append(A%2);
A/=2;
}
String s=sb.reverse().toString();
return s;
}
}

A : "10001100010111000101100010100110001001101010000010011010"
B : "101111000100100100111110010010101110101001100100101001111010011000000110"
Your function returned the following :

The expected returned value :
101111000100100111001010101001110100001100001010110011100100011010100000

最佳答案

第二个二进制数对于 long 来说太大了,因为它有 72 个二进制数字,而 long 仅支持最多 264-1。因此,您将遇到 long 溢出,您的数字为“负”,并且 while (A>0) 循环永远不会执行。

您可以只使用BigInteger,而不是long。您可以类似地为 BigInteger 实现算法,或者仅使用其自己的二进制转换方法。

public String addBinary(String A, String B) {
return bin(num(A).add(num(B)));
}

public BigInteger num(String A) {
return new BigInteger(A, 2);
}

public String bin(BigInteger A) {
return A.toString(2);
}

当然,更有趣的方法是自己实现一个实际二进制加法器,添加并携带各个数字(留给感兴趣的读者作为练习)。

关于java - 这个特定的测试用例如何返回空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56664391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com