[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编辑  收藏  举报

导航