博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode——67 Java之二进制求和
阅读量:6816 次
发布时间:2019-06-26

本文共 1412 字,大约阅读时间需要 4 分钟。

题目要求:

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

输入为非空字符串且只包含数字 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就是字符串连接后的结果。
 

转载于:https://www.cnblogs.com/xiayanjiao/p/10630433.html

你可能感兴趣的文章
太忙女友消息未及时回复,分手吗?python微信自动消息帮你谈恋爱
查看>>
Java 多线程NIO学习
查看>>
命名实体识别
查看>>
动态切换的动态代理
查看>>
电商项目(下)
查看>>
vue 数字滚动递增效果
查看>>
vue2.0中父子,兄弟组件的传值2
查看>>
Spring Boot注解常用!!!看了就可以开发大量项目了
查看>>
音频编码 Audio Converter
查看>>
SQL - case when then else end 的用法
查看>>
web优化是http缓存(上)
查看>>
19-01-14
查看>>
媒体融合三部曲(未完待续...)
查看>>
OkHttp3-拦截器(Interceptor)
查看>>
Bootstrap在实际生产开发中的使用心得
查看>>
Google推出实时内容洞察工具 为用户提供表现最好的内容
查看>>
虚拟机故障与故障处理工具之指令篇
查看>>
iOS 基础知识学习目录索引
查看>>
My_Base_notes
查看>>
Node assert断言学习及mocha框架与travisCI初探
查看>>