LeetCode Add Binary

本文详细介绍了如何使用Java解决LeetCode上的二进制加法问题,包括代码实现、时间复杂度分析及空间复杂度分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原题链接在这里: https://leetcode.com/problems/add-binary/

题目:

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

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

题解:

Plus One相似。都是维护一个currentDigit(%) 和一个carryDigit(/). 

Note:若是算到最后,carryDigit还是1的话就是有一个最后的进位,要在res的首位加起来。

Time Complexity: O(max(a.length(), b.length())), Space O(max(a.length(), b.length())).

AC Java: 

 1 public class Solution {
 2     public String addBinary(String a, String b) {
 3         if(a == null){
 4             return b;
 5         }
 6         if(b == null){
 7             return a;
 8         }
 9         
10         StringBuilder sb = new StringBuilder();
11         int carry = 0;
12         int i = a.length()-1;
13         int j = b.length()-1;
14         while(i>=0 && j>=0){
15             int sum = (a.charAt(i)-'0') + (b.charAt(j)-'0') + carry;
16             carry = sum/2;
17             sb.insert(0, sum%2);
18             i--;
19             j--;
20         }
21         while(i>=0){
22             int sum = (a.charAt(i)-'0') + carry;
23             carry = sum/2;
24             sb.insert(0, sum%2);
25             i--;
26         }
27         while(j>=0){
28             int sum = (b.charAt(j)-'0') + carry;
29             carry = sum/2;
30             sb.insert(0, sum%2);
31             j--;
32         }
33         
34         if(carry != 0){
35             sb.insert(0, carry);
36         }
37         
38         return sb.toString();
39     }
40 }

 

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/4825037.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值