leetcode:Add Binary 【Java】

一、问题描述

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

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

二、问题分析

把两个字符串用‘0’补充为相同长度后,从高位到低位模拟二进制真实运算,最后把结果反转后返回。

三、算法代码

public class Solution {
    public String addBinary(String a, String b) {
        int len = Math.max(a.length(), b.length());
        //把两个字符串用‘0’补充为一样长
        if(a.length() < len){
            StringBuffer tmp = new StringBuffer();
            for(int i = 0; i < len - a.length(); i++){
                tmp.append('0');
            }
            a = tmp.append(a).toString();
        }
        if(b.length() < len){
            StringBuffer tmp = new StringBuffer();
            for(int i = 0; i < len - b.length(); i++){
                tmp.append('0');
            }
            b = tmp.append(b).toString();
        }
        
        StringBuffer result = new StringBuffer();
        int valueOne = 0;
        int valueTwo = 0;
        int carry = 0;
        for(int i = len - 1; i >= 0; i--){//模拟真实的二进制运算,需要从高位到低位开始
            valueOne = Integer.parseInt(String.valueOf(a.charAt(i)));
            valueTwo = Integer.parseInt(String.valueOf(b.charAt(i)));
            result.append((valueOne + valueTwo + carry) % 2);
            carry = (valueOne + valueTwo + carry) / 2;
        }
        if(carry == 1){
            result.append(carry);
        }
        return result.reverse().toString();//需要reverse以下
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值