LeetCode题库 67. 二进制求和(简单)
题解
利用Java特性
class Solution {
public String addBinary(String a, String b) {
return Integer.toBinaryString(
Integer.parseInt(a, 2) + Integer.parseInt(b, 2)
);
}
}
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/add-binary/solution/er-jin-zhi-qiu-he-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
模拟人工运算方式
class Solution {
public String addBinary(String a, String b) {
StringBuffer res = new StringBuffer();
int i = a.length() - 1;
int j = b.length() - 1;
int carry = 0;
while(i >= 0 && j >= 0) {
int sum = carry;
sum += (a.charAt(i--) - '0') + (b.charAt(j--) - '0');
carry = sum / 2;
res.append(sum % 2);
}
while(i >= 0) {
int sum = carry + a.charAt(i--) - '0';
carry = sum / 2;
res.append(sum % 2);
}
while(j >= 0) {
int sum = carry + b.charAt(j--) - '0';
carry = sum / 2;
res.append(sum % 2);
}
if(carry == 1){
res.append(carry);
}
return res.reverse().toString();
}
}
思考
- 语言高级还有这等好事;
- 返回值连续两次引用不符合软工设计思想;