AddBinary

二进制求和

题目介绍

二进制求和

给你两个二进制字符串,返回它们的和(用二进制表示)。

输入为 非空 字符串且只包含数字 10

示例1:

1
2
输入: a = "11", b = "1"
输出: "100"

示例2:

1
2
输入: a = "1010", b = "1011"
输出: "10101"

提示:

  • 每个字符串仅由字符 '0''1' 组成。
  • 1 <= a.length, b.length <= 10^4
  • 字符串如果不是 "0" ,就都不含前导零。

题目解法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package algorithm;

public class AddBinary {

public static String addBinary(String a, String b) {

char[] charsA = a.toCharArray();
char[] charsB = b.toCharArray();
int step = 0;
int m = a.length();
int n = b.length();
StringBuilder sb = new StringBuilder();
int max = Math.max(m, n);
for (int i = 1; i <= max; i++) {
int sum = 0;
if (m - i >= 0) {
sum += charsA[m - i] - '0';
}
if (n - i >= 0) {
sum += charsB[n - i] - '0';
}
sum += step;
StringBuilder temp = new StringBuilder().append(sum % 2);
sb = temp.append(sb);
step = sum / 2;
}
if (step == 1) {
return "1" + sb;
}

return sb.toString();
}

public static void main(String[] args) {
System.out.println(addBinary("11", "1"));

System.out.println(addBinary("1010", "1011"));
}
}

打印:

1
2
100
10101

思路:

简单。


AddBinary
https://yangtzeshore.github.io/2021/04/27/AddBinary/
作者
Chen Peng
发布于
2021年4月27日
许可协议