LeetCode---67. Add Binary

LeetCode—67. Add Binary

题目

https://leetcode.com/problems/add-binary/description/
给两个二进制的字符串,将两者转为二进制后相加,返回和的字符串。
在这里插入图片描述

思路及解法

要注意两点:
1.两个字符串有可能不是等长的,这样在相加时就可能出现空指针的问题,所以首先要把较短的字符串左端补零,将两个字符串补位等长。
2.字符串charAt操作是从字符串的最左端开始操作的,也就是二进制的最高位,所以相加完成后不要忘记reverse

代码
class Solution {
    public String addBinary(String a, String b) {
        int aLen=a.length(), bLen=b.length();
        int maxLen = Math.max(aLen, bLen);
        int tempA, tempB;
        int carry=0, val=0;
        StringBuffer sb = new StringBuffer();
        for(int i=0; i<maxLen; i++){
            tempA = aLen>i ? a.charAt(aLen-i-1)-'0' : 0;
            tempB = bLen>i ? b.charAt(bLen-i-1)-'0' : 0;
            val = (tempA + tempB + carry) % 2;
            carry = (tempA + tempB + carry) / 2;
            
            sb.append(val + "");
        }
        return (carry==1) ? "1"+sb.reverse() : sb.reverse().toString(); 
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值