Leetcode 67. Add Binary 二进制加法 解题报告

本文介绍了一种解决二进制字符串加法的方法,通过字符数组处理和进位逻辑实现两个二进制字符串的加法运算,并返回结果作为新的二进制字符串。

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

1 解题思想

给定以字符串为形式表达的一个二进制数,需要求加法后的值。

这道题是一个弱化版的高精度加法,整体来说和之前做题的方式很类似,注意加法结果可能比原来长一位

2 原题

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

For example,
a = “11”
b = “1”
Return “100”.

3 AC解

public class Solution {
    /**
     * 处理好边界。。今天这道题写的太晚了。。写的有点潦草,见谅
     * **/
    public String addBinary(String a, String b) {
        char numa[]=a.toCharArray();
        char numb[]=b.toCharArray();
        int result[]=new int[Math.max(a.length(),b.length())+1];
        int i=numa.length-1;
        int j=numb.length-1;
        int index;
        int n1,n2;
        int c=0;
        while(i>=0 || j>=0){
            n1=0;
            n2=0;
            if(i>=0)
                n1=numa[i]-'0';
            if(j>=0)
                n2=numb[j]-'0';
            result[Math.max(i,j)+1]=((n1+n2+c)%2);
            c=(n1+n2+c)/2;
            i--;
            j--;
        }
        result[0]=c;
        if(c==0)
            index=1;
        else index=0;
        StringBuilder sb=new StringBuilder();
        for(int k=index;k<result.length;k++){
            sb.append(result[k]+"");
        }
        return sb.toString();



    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值