当前位置

网站首页> 程序设计 > 开源项目 > 程序开发 > 浏览文章

[Leetcode] Add Binary 二进制相加

作者:小梦 来源: 网络 时间: 2024-01-15 阅读:

Add Binary

Given two binary strings, return their sum (also a binary string).

For example, a = "11" b = "1" Return "100".

模拟加法

复杂度

时间 O(N) 空间 O(1)

思路

模拟加法的运算法则,从最低位加到最高位。记得使用StringBuilder来减少字符串操作的开销。

代码

public class Solution {    public String addBinary(String a, String b) {        int i = a.length() - 1, j = b.length() - 1, carry = 0;        StringBuilder sb = new StringBuilder();        while(i >=0 || j >=0){int m = i >= 0 ? a.charAt(i) - '0' : 0;int n = j >= 0 ? b.charAt(j) - '0' : 0;int sum = m + n + carry;carry = sum / 2;sb.insert(0, String.valueOf(sum % 2));i--;j--;        }        if(carry != 0) sb.insert(0, '1');        return sb.toString();    }}

后续 Follow Up

如果不是二进制相加,而是十六进制相加呢?只要把算法中的除2和余2换成16,并添加相应的十六进制字母就行了。

网友最爱