forked from yuduozhou/LeetCode
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathAddBinary1.java
73 lines (69 loc) · 1.95 KB
/
AddBinary1.java
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
public class Solution {
public String addBinary(String a, String b) {
// Start typing your Java solution below
// DO NOT write main() function
int lenA = a.length();
int lenB = b.length();
if (lenA < 1 || lenB < 1) return "";
if (lenA < lenB){
String temp = a;
a = b;
b = temp;
}
lenA = a.length();
lenB = b.length();
if (isZero(b)) return a;
ArrayList<Character> chars = new ArrayList<Character>();
char carry = '0';
int i;
for (i = lenB - 1; i >= 0; i--){
if (a.charAt(i + lenA - lenB) == '1' && b.charAt(i) == '1'){
chars.add(carry);
carry = '1';
}
else if (a.charAt(i + lenA - lenB) == '0' && b.charAt(i) == '0'){
chars.add(carry);
carry = '0';
}
else{
if (carry == '0'){
chars.add('1');
}
else {
chars.add('0');
}
}
}
for (i = lenA - lenB - 1; i >= 0; i--){
if (a.charAt(i) == '0'){
chars.add(carry);
carry = '0';
}
else{
if (carry == '0'){
chars.add('1');
}
else{
chars.add('0');
carry = '1';
}
}
}
if (carry == '1'){
chars.add('1');
}
StringBuilder sb = new StringBuilder();
for (i = chars.size() - 1; i >= 0; i --){
sb.append(chars.get(i));
}
return sb.toString();
}
public boolean isZero(String s){
for (int i = 0; i < s.length(); i++){
if (s.charAt(i) == '1'){
return false;
}
}
return true;
}
}