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

二进制求和

时间:2022-09-07 00:34:54浏览次数:52  
标签:二进制 sum 求和 int 字符串 str carry

二进制求和

一、题目描述

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

输入: 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
From: https://www.cnblogs.com/zjjtt/p/16663834.html

相关文章

  • 计算数字二进制有多少个1——lowbit
    lowbit在计算数字二进制表示中有多少个1的时候,可以使用lowbit来表示。每次找到数的最后一个1的大小。x&(-x)具体代码为 intnum1count(intx){ intm=0; for......
  • delphi 整型转成二进制
    functionIntToBin(AInt:Integer):string;beginResult:='';forvarlIndex:=1toSizeof(AInt)*8doResult:=Result+(AIntshr(Sizeof(AInt)*......
  • 二进制部署k8s集群v1.23.9版本-17-安装minio
    17.1、准备minio镜像192.168.1.200操作dockerpullminio/minio:latestdockerimages|grepminiodockertage31e0721a96bharbor.qgutech.com/middleware/minio:lates......
  • 二进制矩阵中的特殊位置
    二进制矩阵中的特殊位置一、题目描述给一个矩阵mat,其中的元素都为0或1。找出其中的特殊位置的个数。特殊位置就是此位置为1,所在行和列其余位置都为0;返回有几个这样的位......
  • P2261 [CQOI2007]余数求和
    P2261[CQOI2007]余数求和分析求的式子为\(ans=\sum_{i=1}^{n}k\%i\),我们首先需要知道的是\(a\%b=a-b*\left\lfloor\frac{a}{b}\right\rfloor\),则式子就变成了。......
  • papamelon 305. 求和方案 Sumsets
    https://www.papamelon.com/problem/305给你一个数N,只能用2的幂次求和组成,问总共有多少种方案.输入包含多组测试数据,输入以EOF作为结束标志.每组测试数据包含一个......
  • leetcode-1582. 二进制矩阵中的特殊位置
    1582.二进制矩阵中的特殊位置图床:blogimg/刷题记录/leetcode/1582/刷题代码汇总:https://www.cnblogs.com/geaming/p/16428234.html题目思路先对每行进行遍历,如果这......
  • 1582. 二进制矩阵中的特殊位置
    1582.二进制矩阵中的特殊位置给你一个大小为rowsxcols的矩阵mat,其中mat[i][j]是0或1,请返回矩阵 mat中特殊位置的数目。特殊位置定义:如果mat[i][j]=......
  • 6-3 简单求和——10分
    本题要求实现一个函数,求给定的N个整数的和。函数接口定义:intSum(intList[],intN);其中给定整数存放在数组List[]中,正整数N是数组元素个数。该函数须返回N个List......
  • 改变视频文件二进制值而不影响播放的方法
    本质是视频文件二进制值后追加特殊符号(如换行符、制表符)的二进制值importhashlibimportosdefgetFilesByDir(target_path,include_str=None,filter_strs=None):......