题目
给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。
输入为 非空 字符串且只包含数字 1 和 0。
示例
输入: a = “11”, b = “10”
输出: “101”
示例 2:
输入: a = “1010”, b = “1011”
输出: “10101”
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/JFETK5
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
方法1:模拟
Java实现
class Solution {
public String addBinary(String a, String b) {
int i = a.length() - 1;
int j = b.length() - 1;
int add = 0;
StringBuffer res = new StringBuffer();
while (add != 0 || i >= 0 || j >= 0) {
int var1 = i >= 0 ? (a.charAt(i--) - '0') : 0;
int var2 = j >= 0 ? (b.charAt(j--) - '0') : 0;
int var = add + var1 + var2;
if (var == 0) {
res.append("0");
add = 0;
} else if (var == 1) {
res.append("1");
add = 0;
} else if (var == 2) {
res.append("0");
add = 1;
} else if (var == 3) {
res.append("1");
add = 1;
}
}
res.reverse();
return res.toString();
}
}