Leetcode67. 二进制求和(简单模拟)

Posted !0 !

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode67. 二进制求和(简单模拟)相关的知识,希望对你有一定的参考价值。

题目链接:https://leetcode-cn.com/problems/add-binary/

解题思路

这题有点类似于大数相加,只不过这题是二进制。我们可以用t当作进位,然后模拟我们手写加法。

代码

class Solution {
    public String addBinary(String a, String b) {
        StringBuilder ans = new StringBuilder();    //答案
        int i = a.length() - 1, j = b.length() - 1; //从最后开始遍历(个位)
        int t = 0;  //进位
        while(i >= 0 || j >= 0 || t != 0) { //如果没有遍历完两个数,或者还有进位
            if(i >= 0) t += a.charAt(i--) - '0';    //如果a还有数
            if(j >= 0) t += b.charAt(j--) - '0';    //如果b还有数
            ans.append(t % 2);  //加入当前位的和取模
            t /= 2; //进位
        }
        return ans.reverse().toString();    //由于计算之后是个位在第一位,所以要反转
    }
}

复杂度分析

  • 时间复杂度:O(max(n + m))
  • 空间复杂度:O(max(n, m))

以上是关于Leetcode67. 二进制求和(简单模拟)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode67-二进制求和(很长的水题)

LeetCode 67. 二进制求和 | Python

leetcode-67.二进制求和

LeetCode67. 二进制求和

leetcode算法67.二进制求和

Python描述 LeetCode 67. 二进制求和