本文主要是介绍【牛客题】二进制求和 <模拟>,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给定两个用字符串表示的二进制数,返回他们的和。
数据范围:字符串长度满足 1 ≤ n ≤ 1 0 5 10^5 105 ,字符串中只含有 0 和 1,且保证除 0 以外的二进制数没有前导零的情况。
示例输入:
"101","1"
返回值:
"110"
输入:
"0","1"
返回值:
"1"
输入:
"1","1"
返回值:
"10"
题解
public String binaryAdd (String A, String B) {int l1 = A.length() - 1;int l2 = B.length() - 1;int carry = 0;StringBuilder sb = new StringBuilder();while (l1 >= 0 || l2 >= 0) {int n1 = l1 >= 0 ? A.charAt(l1--) - '0' : 0;int n2 = l2 >= 0 ? B.charAt(l2--) - '0' : 0;int tmp = n1 + n2 + carry;carry = tmp / 2;sb.append(tmp % 2);}if (carry != 0) {sb.append(carry);}return sb.reverse().toString();}
public String binaryAdd (String A, String B) {BigInteger a = new BigInteger(A, 2);BigInteger b = new BigInteger(B, 2);BigInteger c = a.add(b);return c.toString(2);}//Integer.toBinaryString 可以将数字转为二进制的字符串
这篇关于【牛客题】二进制求和 <模拟>的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!