zoukankan      html  css  js  c++  java
  • 第67题:二进制求和

    一. 问题描述

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

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

    示例 1:

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

    输出: "100"

    示例 2:

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

    输出: "10101"

    二. 解题思路

    本题采用补齐字符串+按位字符串相加+对字符串进行二进制化的方法进行。

    步骤一:将a,b两个不等长的字符串进行补齐,方便其按位进行运算。

    步骤二:创建字符串c比等长的字符串长度多1。

    步骤三:将a,b两个等长字符串进行按位运算,结果从c的最后一位开始放。

    步骤四:从最后一位开始对c进行判断,如果大于1,向前进一位并将该位置减2。

    步骤五:判断c第一位的值,如果是1则直接输出c,如果是0,则删除第一位输出c。

    三. 执行结果

    执行用时 :4 ms, 在所有 java 提交中击败了77.89%的用户

    内存消耗 :36.2 MB, 在所有 java 提交中击败了55.12%的用户

    四. Java代码

    class Solution {
         public String addBinary(String a, String b) {
            int a_1=a.length();
            int b_1=b.length();
            if(a_1>b_1)
                for(int i=0;i<a_1-b_1;i++)
                {
                    b="0"+b;
                }
            else
            {
                for(int i=0;i<b_1-a_1;i++)
                {
                    a="0"+a;
                }
            }
            
            char []tempA=a.toCharArray();
            char []tempB=b.toCharArray();
            char []tempc=new char[Math.max(tempA.length, tempB.length)+1];
            tempc[0]='0';
            for(int i=tempA.length-1,c=tempc.length-1;i>=0&&c>=0;i--,c--)
            {
                tempc[c]=(char)((int)tempA[i]+(int)tempB[i]-(int)('0'));
            }
            
            for(int i=tempc.length-1;i>0;i--)
            {
                if(tempc[i]=='2')
                {
                    tempc[i]='0';
                    tempc[i-1]=(char)((int)tempc[i-1]+1);
                }
                if(tempc[i]=='3')
                {
                    tempc[i]='1';
                    tempc[i-1]=(char)((int)tempc[i-1]+1);
                }
                
            }
            String tempall="";
            if(tempc[0]=='1')
            {
              String temp=new String(tempc);
              return temp;
            }
            else 
            {
                for(int m=1;m<tempc.length;m++)
                {
                    tempall=tempall+tempc[m];
                    
                }
                return tempall;
                
            }
            
        }
    }
  • 相关阅读:
    easycom HBuilderX 2.5.5起支持easycom组件模式
    我们为什么需要async/await ?
    封装uni.request请求
    uniapp 更新
    uniapp中plus的使用
    uniapp 自适应不同比例的屏幕
    npm 设置淘宝镜像、nrm、nodemon
    uniapp之nvue入坑
    Android平台签名证书(.keystore)生成指南
    day 37 数据库MySQL的进一步认识
  • 原文地址:https://www.cnblogs.com/xiaobaidashu/p/11673800.html
Copyright © 2011-2022 走看看