leetcode_67. 二进制求和
一、题目描述
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "1"
输出: "100"
示例 2:
输入: a = "1010", b = "1011"
输出: "10101"
二、解题思路
(1)BigInteger
用BigInteger(具体数字,进制).add(new BigInteger(具体数字,进制));计算两束的和,再转化为字符串输出
(2) Integer.toBinaryString
考虑一个最朴素的方法:先将 aa 和 bb 转化成十进制数,求和后再转化为二进制数。利用 Python 和 Java 自带的高精度运算,我们可以很简单地写出这个程序:
三、具体实现
(1)BigInteger
import java.math.BigInteger;
class Solution {
public String addBinary(String a, String b) {
return new BigInteger(a, 2).add(new BigInteger(b, 2)).toString(2);
}
}
(2) Integer.toBinaryString
class Solution {
public String addBinary(String a, String b) {
return Integer.toBinaryString(
Integer.parseInt(a, 2) + Integer.parseInt(b, 2)
);
}
}
|