我是靠谱客的博主 诚心雪糕,最近开发中收集的这篇文章主要介绍输入二进制字符串求和,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目一:

给你两个二进制字符串,返回它们的和(用二进制表示)。

输入为 非空 字符串且只包含数字 1 和 0

示例 1:

输入: a = "1111", b = "1111"
输出: "10000"

思路:

 由于是从后往前计算的结果依次相加,所以最后需要反转,输出结果集。

如果每个字符遍历结束了,carray == 1,那么输出的结果再加1(最高位相加为2 或者 3,进位为1)。

    public static void sumBinary(String a,String b) {
        StringBuffer stringBuffer = new StringBuffer();
        int len = Math.min(a.length(),b.length());
        int carray = 0;
        int result = 0;
        int i =len - 1;
        for(; i >= 0; i--){
      result = (carray + (a.charAt(i)-'0') +(b.charAt(i))) % 2;//算出结果
      carray = (carray + (a.charAt(i)-'0')+ (b.charAt(i))-'0') / 2;
        stringBuffer.append(result);
        System.out.println(carray);
        }
        if(carray == 1){
            stringBuffer.append(1);
        }
    System.out.println(stringBuffer.reverse().toString());
    }


    public static void main(String[] args) {
        String a = "10100";
        String b = "00111";
        sumBinary(a,b);
        
    }

题目二:

给你两个二进制字符串,返回它们的和(用二进制表示)。

输入为 非空 字符串且只包含数字 1 和 0。

示例 1:

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

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


该题目与上一个题目相比,就是给出的字符串的个数不一定相同,对于这种情况,可以借助双目运算符来解决。

由于不清楚两个字符谁长谁短,所以使用双目运算符判断。

1.为了简化运算,sum先存放进位加第一个数字的大小,接着更新sum的值,sum = sum + 下一个数字。

2..对于个数不相等的情况,当字符长度短的字符遍历结束后,可以补0,继续相加。

3.循环结束的条件就是当两个字符的下标都小于0的时候。

4.如果每个字符遍历结束了,carray == 1,那么输出的结果再加1(最高位相加为2 或者 3,进位为1)。

package com.everyday.day5;

/**
 * @program: sixiang
 * @description
 * @author: wenwen
 * @create: 2021-07-31 09:34
 **/
public class addBinary {
    public static void add(String str1,String str2){
        StringBuffer stringBuffer = new StringBuffer();
    int lena = str1.length();
    int lenb = str2.length();
    int i = lena -1; int j = lenb -1;
    int sum = 0;int result = 0;int carray = 0;
    while( i >= 0 || j >= 0){

        sum = carray +  (i >= 0 ?  +str1.charAt(i) -'0' : 0);
         i--;
        sum =sum  + (j >= 0 ? str2.charAt(j) - '0' : 0);
         j--;
        System.out.println(sum);
        result = sum % 2;
        carray = sum / 2;
        stringBuffer.append(result);
    }
    
    if(carray == 1){
        stringBuffer.append(1);
    }
        System.out.println(stringBuffer.reverse().toString());
    }
    public static void main(String[] args){
        add("1101","101");

    }
}

最后

以上就是诚心雪糕为你收集整理的输入二进制字符串求和的全部内容,希望文章能够帮你解决输入二进制字符串求和所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部