其他分享
首页 > 其他分享> > 二进制求和

二进制求和

作者:互联网

二进制求和

一、题目描述

给定二进制两个字符串返回它们的和用二进制表示。
实例

输入: a = "11", b = "1"
输出: "100"

输入: a = "1010", b = "1011"
输出: "10101"

二、题目分析

给定的是字符串,返回的也是字符串。但是计算要通过加法计算。

三、解题思路

倒序遍历两个字符串,并从最低位相加。遇2进1。将余数存入栈中。第二此循环的和是进的位在加上原本两个字符串位置上的数。这里还要注意两个字符串长度不一样时。还需遍历其中另一个。还需注意当进的位不为零时,需要将此位上的数字压入栈顶。
代码实现

public String addBinary(String a, String b) {


        int n = a.length()-1;
        int m = b.length()-1;

        int carry = 0;
        StringBuffer str = new StringBuffer();

        while( n >=0 && m >=0){
            int sum = carry;

            sum += a.charAt(n--) - '0';
            sum += b.charAt(m--) - '0';
            carry = sum/2;
            str.append(sum%2);
        }

        while( n >= 0 ){
            int sum = carry += a.charAt(n--) - '0';
            carry = sum/2;
            str.append(sum%2);
        }

        while( m >= 0 ){
            int sum = carry += b.charAt(m--) - '0';
            carry = sum/2;
            str.append(sum%2);
        }

        if(carry == 1){
            str.append(carry);
        }

        return str.reverse().toString();
    }

标签:二进制,sum,求和,int,字符串,str,carry,--
来源: https://www.cnblogs.com/zjjtt/p/16663834.html