[LeetCode]67. 二进制求和(字符串)(数学)
题目
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。
题解
两个字符串从低位开始加,前面位不够补0。维护进位,最后加上最后一个进位,最后反转结果字符串。
代码
class Solution {
public String addBinary(String a, String b) {
StringBuilder sb = new StringBuilder();
int ca = 0;
for(int i = a.length() - 1, j = b.length() - 1;i>=0||j>=0;i--,j--){
int sum=ca;
sum+= i>=0?a.charAt(i)-'0':0;
sum+= j>=0?b.charAt(j)-'0':0;
sb.append(sum%2);
ca= sum/2;
}
sb.append(ca==1?1:"");
return sb.reverse().toString();
}
}
posted on 2020-06-14 00:04 coding_gaga 阅读(98) 评论(0) 编辑 收藏 举报