【题目描述】
给你两个二进制字符串 a
和 b
,以二进制字符串的形式返回它们的和。
https://leetcode.cn/problems/add-binary/
【示例】
【代码】官方
基于Integer. parseInt(String s, int radix) 把字符串s按radix进制进行转换 然后利用 toBinaryString转字符串
package com.company;
// 2022-12-28
import java.math.BigInteger;
class Solution {
public String addBinary(String a, String b) {
return Integer.toBinaryString(
Integer.parseInt(a, 2) + Integer.parseInt(b, 2)
);
}
}
public class Test{
public static void main(String[] args) {
new Solution().addBinary("11", "1"); // 输出 "100"
new Solution().addBinary("1010", "1011"); // 输出 "10101"
}
}
【admin】二进制计算
class Solution {
public String addBinary(String a, String b) {
StringBuffer ans = new StringBuffer();
int n = Math.max(a.length(), b.length()), carry = 0;
for (int i = 0; i < n; ++i) {
carry += i < a.length() ? (a.charAt(a.length() - 1 - i) - '0') : 0;
carry += i < b.length() ? (b.charAt(b.length() - 1 - i) - '0') : 0;
ans.append((char) (carry % 2 + '0'));
carry /= 2;
}
if (carry > 0) {
ans.append('1');
}
ans.reverse();
return ans.toString();
}
}
【代码】admin
new BigInteger(String val, int radix) --> 把String的字符串按radix类型转换
BigInteger add(BigInteger val) --> 利用BigInter的add来进行相加
String toString(int radix) --> 利用toString按对应的制式进行转换
package com.company;
// 2022-12-29
import java.math.BigInteger;
class Solution {
public String addBinary(String a, String b) {
BigInteger x = new BigInteger(a, 2);
BigInteger y = new BigInteger(b, 2);
BigInteger res = x.add(y);
System.out.println(res.toString(2));
return res.toString(2);
}
}
public class Test{
public static void main(String[] args) {
new Solution().addBinary("11", "1"); // 输出 "100"
new Solution().addBinary("1010", "1011"); // 输出 "10101"
}
}