class Solution {
public:
string addBinary(string a, string b) {
if(a==""&&b=="") return "";
if(a=="") return b;
if(b=="") return a;
char *pa=&a[],*pb=&b[];
int na=,nb=;
int i=;
int t=,m=;
while(*pa!='\0'){
pa++;
na++;
}
pa--;
while(*pb!='\0'){
pb++;
nb++;
}
pb--;
if(na>=nb){ //存a中
for(i=na-;i>-;i--){
if(i>na-nb-){
m=(*pa-'') + (*pb-'')+t;
pa--;
pb--;
}
else if( i<na-nb &&t == )
return a;
else{
m=(*pa-'')+t;
pa--;
}
t=m/; //进位
m=m%; //当前位
a[i]=m+'';
}
if(t>)
return (""+a);
else
return a;
}
else{ //存b中
for(i=nb-;i>-;i--){
if(i>nb-na-){
m=(*pb-'') + (*pa-'')+t;
pa--;
pb--;
}
else if( i<nb-na &&t == )
return b;
else{
m=(*pb-'')+t;
pb--;
}
t=m/; //进位
m=m%; //当前位
b[i]=m+'';
}
if(t>)
return (""+b);
else
return b;
}
}
};

题意:给出两个字符串,里面分别存有一个二进制数,将二进制相加后返回结果,依然是字符串型。

思路:两个指针,从后面开始将两个二进制数相加,如果有一个比较长,那么另一个指针肯定先扫完一个字符串,此时将结果保存在较长的那个字符串中返回。在一个字符串已扫完的情况下,另一个字符串的未扫完部分扔要判断是否需要继续加,这取决于进位是否为0,若为0,连后面未扫部分都不用扫了,直接返回这个扔有未扫的字符串。若进位不为0,那么就要一个个继续扫下去了,只要满足一个条件就能不用继续往下扫,此条件是进位为0。若未扫完的那个字符串扫到完了,需再考虑一次进位。

吐槽:代码是草稿代码,但是AC了,从比较容易理解的角度写的。

LeetCode Add Binary 两个二进制数相加的更多相关文章

  1. [LeetCode] Add Binary 二进制数相加

    Given two binary strings, return their sum (also a binary string). For example,a = "11"b = ...

  2. LeetCode——Add Binary

    Given two binary strings, return their sum (also a binary string). For example, a = "11" b ...

  3. LeetCode: Add Binary 解题报告

    Add BinaryGiven two binary strings, return their sum (also a binary string). For example,a = "1 ...

  4. [Leetcode] add binary 二进制加法

    Given two binary strings, return their sum (also a binary string). For example,a ="11"b =& ...

  5. [leetcode]Add Binary @ Python

    原题地址:https://oj.leetcode.com/problems/add-binary/ 题意: Given two binary strings, return their sum (al ...

  6. Leetcode Add Binary

    Given two binary strings, return their sum (also a binary string). For example,a = "11"b = ...

  7. LeetCode Add Binary |My Solution

    Given two binary strings, return their sum (also a binary string). For example, a = "11" b ...

  8. leetcode笔记:Add Binary

    一.题目描写叙述 Given two binary strings, return their sum (also a binary string). For example, a = "1 ...

  9. LeetCode 面试:Add Binary

    1 题目 Given two binary strings, return their sum (also a binary string). For example,a = "11&quo ...

随机推荐

  1. nginx配置同一域名下,共存2个nodejs项目

    项目背景: 1.官网需要改版,使用nodejs nuxt框架进行重构 2.官网改版没有全部完成.但需要上线首页 项目需求: 1.让首页内容显示为新项目 2.让老官网的内容可以被访问到(比如www.n. ...

  2. java笔试面试题准备

    J2SE基础 九种基本数据类型的大小,以及它们的封装类 byte 8 Byte char 16 Character short 16 Short int 32 Integer long 64 Long ...

  3. AOP常用注解

    1.@Aspect 配置切面Bean,和<bean.../>元素进行配置无区别,一样支持依赖注入来配置属性值: 如果启动了Spring的"零配置"特性,一样可以让Spr ...

  4. 利用CSS制作脸书

    很多网站都支持图片上的头像框识别,鼠标在头像框处,会提示一些人物信息. 这次就利用CSS实现这样一个功能: div处主要包括两部分,一部分是图片:另一部分是链接以及脸框 <div class=& ...

  5. 使用shell脚本分析Nagios的status.dat文件

    前言 Nagios的安装和配置以及批量添加监控服务器在我前面的文章中已经讲的很详细了. 我们知道,Nagios的网页控制页面(一般为http://nagio.domain.com/nagios)里可以 ...

  6. thinkphp5使用QueryList实现采集功能

    QueryList是基于phpQuery的 1.下载`QueryList.php`和`phpQuery.php`这两个文件. 2.在`extend`下新建`QL`目录. 3.将下载好的`QueryLi ...

  7. 从输入URL到浏览器显示页面

    去看经典是不会错的,如果觉得太长,那就休息一下继续看. 经验告诉我,读一篇经典足矣,不要浪费时间去搜索其他地方到处复制粘贴的博文. 所以奉上我过滤的经典: 1.How browser work 2.h ...

  8. IPv6邻居发现协议

    IPv6邻居发现协议 邻居发现协议NDP 邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要的基础协议.邻居发现协议替代了IPv4的ARP(Add ...

  9. 把查询出来的结果进行修改再赋值给list

    List<RivBillNoPatternL> list = this.jdbcTemplate.getJdbcOperations().query(sqlSb.toString(), p ...

  10. Linux定时清理30天前的Tomcat日志脚本

    一.在tomcat的log路径下新建.sh脚本文件clean.sh,内容如下:#!/bin/bashlogs_path="/mnt/tomcat/apache-tomcat-8.5.23/l ...