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(); 
    }
}

猜你喜欢

转载自blog.csdn.net/pnnngchg/article/details/82951047