0
点赞
收藏
分享

微信扫一扫

【LeeCode】67. 二进制求和

生态人 2022-12-29 阅读 156

【题目描述】

给你两个二进制字符串 ​a​ 和 ​b​ ,以二进制字符串的形式返回它们的和。

​​https://leetcode.cn/problems/add-binary/​​​


【示例】

【LeeCode】67. 二进制求和_java

【代码】官方

基于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"
}
}


举报

相关推荐

0 条评论