Loading

LeetCode 67 二进制求和

LeetCode67 二进制求和

题目描述

给你两个二进制字符串,返回它们的和(用二进制表示)。

输入为 非空 字符串且只包含数字 10

样例

输入: 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();
    }
}

posted @ 2020-11-16 20:23  想用包子换论文  阅读(82)  评论(0)    收藏  举报