Problem Description:
67. Add Binary
Easy
1983285Add to ListShare
Given two binary strings, return their sum (also a binary string).
The input strings are both non-empty and contains only characters
1
or0
.Example 1:
Input: a = "11", b = "1" Output: "100"Example 2:
Input: a = "1010", b = "1011" Output: "10101"
Constraints:
- Each string consists only of
'0'
or'1'
characters.1 <= a.length, b.length <= 10^4
- Each string is either
"0"
or doesn't contain any leading zero.
Code:
class Solution {
public String addBinary(String a, String b) {
int lenA = a.length();
int lenB = b.length();
StringBuilder st = new StringBuilder();
boolean flag = false;
while(lenA > 0 || lenB > 0) {
if(lenA <= 0) {
if(b.charAt(lenB - 1) == '1') {
if(flag) {
st.append('0');
flag = true;
} else {
st.append('1');
flag = false;
}
} else {
if(flag) {
st.append('1');
} else {
st.append('0');
}
flag = false;
}
lenB--;
continue;
}
if(lenB <= 0) {
if(a.charAt(lenA - 1) == '1') {
if(flag) {
st.append('0');
flag = true;
} else {
st.append('1');
flag = false;
}
} else {
if(flag) {
st.append('1');
} else {
st.append('0');
}
flag = false;
}
lenA--;
continue;
}
if(a.charAt(lenA - 1) == '1' && b.charAt(lenB - 1) == '1') {
if(flag) {
st.append('1');
} else {
st.append('0');
}
flag = true;
} else if(a.charAt(lenA - 1) == '1' && b.charAt(lenB - 1) == '0') {
if(flag) {
st.append('0');
flag = true;
} else {
st.append('1');
flag = false;
}
} else if(a.charAt(lenA - 1) == '0' && b.charAt(lenB - 1) == '1') {
if(flag) {
st.append('0');
flag = true;
} else {
st.append('1');
flag = false;
}
} else if(a.charAt(lenA - 1) == '0' && b.charAt(lenB - 1) == '0') {
if(flag) {
st.append('1');
} else {
st.append('0');
}
flag = false;;
}
lenA--;
lenB--;
}
if(flag) {
st.append('1');
}
return st.reverse().toString();
}
}