LeetCode 67 二进制求和
LeetCode67 二进制求和
题目描述
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1
和 0
。
样例
输入: a = "11", b = "1"
输出: "100"
输入: a = "1010", b = "1011"
输出: "10101
算法分析
- 注意逆序存储
时间复杂度
\(O(n+m)\)
Java代码
class Solution {
public String addBinary(String a, String b) {
StringBuffer sba = new StringBuffer(a);
StringBuffer sbb = new StringBuffer(b);
sba = sba.reverse();
sbb = sbb.reverse();
StringBuffer ans = new StringBuffer("");
int t = 0;
for(int i = 0; i < sba.length() || i < sbb.length() ; i++){
if(i < sba.length()) t += sba.charAt(i) - '0';
if(i < sbb.length()) t += sbb.charAt(i) - '0';
ans.append(t%2);
t /= 2;
}
if(t!=0) ans.append(t);
return ans.reverse().toString();
}
}