Skip to content

Commit a38a84c

Browse files
committed
add 067
1 parent ae66bc7 commit a38a84c

File tree

3 files changed

+110
-2
lines changed

3 files changed

+110
-2
lines changed

note/067/README.md

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# [Plus One][title]
2+
3+
## Description
4+
5+
Given two binary strings, return their sum (also a binary string).
6+
7+
For example,
8+
a = `"11"`
9+
b = `"1"`
10+
Return `"100"`.
11+
12+
**Tags:** Math, String
13+
14+
15+
## 思路
16+
17+
题意是给你两个二进制串,求其和的二进制串。
18+
19+
``` java
20+
public class Solution {
21+
public String addBinary(String a, String b) {
22+
StringBuilder sb = new StringBuilder();
23+
int carry = 0, p1 = a.length() - 1, p2 = b.length() - 1;
24+
while (p1 >= 0 && p2 >= 0) {
25+
carry += p1 >= 0 ? a.charAt(p1--) - '0' : 0;
26+
carry += p2 >= 0 ? b.charAt(p2--) - '0' : 0;
27+
sb.insert(0, (char) (carry % 2 + '0'));
28+
carry >>= 1;
29+
}
30+
while (p1 >= 0) {
31+
carry += p1 >= 0 ? a.charAt(p1--) - '0' : 0;
32+
sb.insert(0, (char) (carry % 2 + '0'));
33+
carry >>= 1;
34+
}
35+
while (p2 >= 0) {
36+
carry += p2 >= 0 ? b.charAt(p2--) - '0' : 0;
37+
sb.insert(0, (char) (carry % 2 + '0'));
38+
carry >>= 1;
39+
}
40+
if (carry == 1) {
41+
sb.insert(0, '1');
42+
}
43+
return sb.toString();
44+
}
45+
}
46+
```
47+
48+
49+
## 结语
50+
51+
如果你同我一样热爱数据结构、算法、LeetCode,可以关注我GitHub上的LeetCode题解:[awesome-java-leetcode][ajl]
52+
53+
54+
55+
[title]: https://leetcode.com/problems/plus-one
56+
[ajl]: https://github.com/Blankj/awesome-java-leetcode

project/LeetCode/leetcode/src/main/java/com/blankj/easy/_066/Solution.java

-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package com.blankj.easy._066;
22

3-
import java.io.File;
4-
53
/**
64
* <pre>
75
* author: Blankj
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.blankj.easy._067;
2+
3+
/**
4+
* <pre>
5+
* author: Blankj
6+
* blog : http://blankj.com
7+
* time : 2017/04/21
8+
* desc :
9+
* </pre>
10+
*/
11+
12+
public class Solution {
13+
public String addBinary(String a, String b) {
14+
StringBuilder sb = new StringBuilder();
15+
int carry = 0, p1 = a.length() - 1, p2 = b.length() - 1;
16+
while (p1 >= 0 && p2 >= 0) {
17+
carry += a.charAt(p1--);
18+
carry += b.charAt(p2--);
19+
sb.insert(0, (char) (carry % 2 + '0'));
20+
carry >>= 1;
21+
}
22+
while (p1 >= 0) {
23+
carry += a.charAt(p1--) - '0';
24+
sb.insert(0, (char) (carry % 2 + '0'));
25+
carry >>= 1;
26+
}
27+
while (p2 >= 0) {
28+
carry += b.charAt(p2--) - '0';
29+
sb.insert(0, (char) (carry % 2 + '0'));
30+
carry >>= 1;
31+
}
32+
if (carry == 1) {
33+
sb.insert(0, '1');
34+
}
35+
return sb.toString();
36+
}
37+
38+
// public String addBinary(String a, String b) {
39+
// StringBuilder sb = new StringBuilder();
40+
// int carry = 0, p1 = a.length() - 1, p2 = b.length() - 1;
41+
// while (p1 >= 0 || p2 >= 0 || carry == 1) {
42+
// carry += p1 >= 0 ? a.charAt(p1--) - '0' : 0;
43+
// carry += p2 >= 0 ? b.charAt(p2--) - '0' : 0;
44+
// sb.insert(0, (char) (carry % 2 + '0'));
45+
// carry >>= 1;
46+
// }
47+
// return sb.toString();
48+
// }
49+
50+
public static void main(String[] args) {
51+
Solution solution = new Solution();
52+
System.out.println(solution.addBinary("11", "1"));
53+
}
54+
}

0 commit comments

Comments
 (0)