zoukankan      html  css  js  c++  java
  • LeetCode——67 Java之二进制求和

    题目要求:

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

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

    示例 1:

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

    示例 2:

    输入: a = "1010", b = "1011"
    输出: "10101"
    思路:
    看到题目要求是一个关于二进制求和的问题,那么就要想一想二进制求和的结果有哪几种形式,of course,很简单,进位or不进位。那么哪种情况下进位,哪种情况下无需进位,
    我们就来简单说一下。进位:1+1=2进位,1+1+1=3进位(当高位为1+1,低位又进一个位)。无需进位的情况:0+0=0,0+1=1.接下来继续想,当每个位上求和结果为2时,需要
    进位,此位变为0,向高位进1;当求和结果为0或者1时,无需进位;当求和结果为3时 ,此位变为1,向高位进1.最后一个问题,就是怎么把字符串每个对

    应位置上的数一 一相加,可以用String方法里的substring()方法。
    代码示例:
    class Solution {
        public String addBinary(String a, String b) {  
            String result = "";
            int aLen = a.length() - 1;
            int bLen = b.length() - 1;
            int sum = 0;
            while(aLen>=0 || bLen>=0){
                if(aLen>=0){
                    sum +=Integer.parseInt(a.substring(aLen,aLen+1));
                    aLen--;
                }
                if(bLen>=0){
                    sum +=Integer.parseInt(b.substring(bLen,bLen+1));
                    bLen--;
                }
                if(sum==2){
                    result = "0" + result;
                    sum=1;
                }else if(sum==0 || sum==1) {
                    result = sum +"" + result;
                    sum = 0;
                }else if(sum==3){
                    result = "1" + result;
                    sum = 1;
                }
            }
            if(sum==1)
                result = "1" + result;
            return result;
        }
    }

    注意:

     result = sum +"" + result;中的双引号是把整型的sum转换为字符串,等号左边的result就是字符串连接后的结果。


  • 相关阅读:
    Markdown基础语法
    Java是什么
    myBatis框架_关于怎么获得多表查询的总记录数
    关于Could not load driverClass ${jdbc.driverClassName}问题解决方案
    java中String与StringBuffer拼接的区别
    部分标签
    基础标签 网页分类
    入坑小开头
    完整版的OpenLDAP搭建全过程
    测试Linux下tcp最大连接数限制
  • 原文地址:https://www.cnblogs.com/xiayanjiao/p/10630433.html
Copyright © 2011-2022 走看看