https://leetcode.com/problems/add-binary/
2019-10-05
class Solution {
public String addBinary(String a, String b) {
int sum = 0;
int carry = 0;
StringBuilder sb = new StringBuilder();
for (int i = a.length()-1, j = b.length() -1; i >= 0 || j >= 0; i--,j--) {
sum = carry;
sum += i>=0? a.charAt(i)-'0' : 0;// 补足位数较少的数字
sum += j>=0? b.charAt(j)-'0' : 0;
sb.append(sum%2);
carry = sum/2;//进位
}
sb.append(carry == 1 ? carry : "");
return sb.reverse().toString();
}
}
2020-04-16
class Solution {
public String addBinary(String a, String b) {
StringBuilder sb = new StringBuilder();
int carry = 0;
int aLen = a.length(), bLen = b.length();
while(aLen > 0 || bLen > 0 || carry != 0) {
// int opd1, opd2;
// if(aLen <= 0) opd1 = 0; else opd1 = a.charAt(aLen-1) - '0';
// if(bLen <= 0) opd2 = 0; else opd2 = b.charAt(bLen-1) - '0';
// 改写成
int opd1 = aLen <= 0 ? 0 : a.charAt(aLen-1) - '0';
int opd2 = bLen <= 0 ? 0 : b.charAt(bLen-1) - '0';
int temp = opd1 + opd2 + carry;
sb.append(temp%2);
// if(temp == 0 || temp == 1) {
// carry = 0;
// } else if (temp == 2 || temp == 3) {
// carry = 1;
// }
// 改写成
carry = temp/2;
aLen--;
bLen--;
}
return sb.reverse().toString();
}
}
TC: O(n)
SC: O(n)
Note:
- if-else语句的简化
- char to int的简便转化方法
本文详细介绍了如何实现两个二进制数的相加操作,通过Java代码展示了位运算和进位处理的过程,提供了两种不同的实现方法,并分析了时间复杂度和空间复杂度。

263

被折叠的 条评论
为什么被折叠?



