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. 删除docker私有仓库中的镜像

    1.搭建私有仓库 (1)拉取私有仓库镜像 docker pull registry(2)启动私有仓库容器 docker run ‐di ‐‐name=registry ‐p 5000:5000 reg ...

  2. centos运行netcore error:package: ‘Microsoft.AspNetCore.Antiforgery‘, version: ‘2.0.3‘

    Error: An assembly specified in the application dependencies manifest (*.*.deps.json) was not found: ...

  3. C++基础之类和对象二

    (1)指向类的成员的指针分为指向数据成员的指针和指向成员函数的指针两种.一个类的对象用运算符“.*”来操作指向该类成员的指针,而一个指向类的对象的指针用运算符“->”来操作指向该类成员的指针.( ...

  4. sed命令使用

    创建模板文件 # cat >> example.txt <<"EOF" TeSt Test test EOF 测试过程中均不使用-i参数避免模板文件内容被修 ...

  5. [poj 1276] Cash Machine 多重背包及优化

    Description A Bank plans to install a machine for cash withdrawal. The machine is able to deliver ap ...

  6. 读《JavaScript权威指南》笔记(一)

    1.Number()  parseInt()  parseFloat() 如果通过Number()转换函数传入一个字符串,它会试图将其转换为一个整数或浮点数直接量,这个方法只能基于十进制数进行转换,并 ...

  7. Centos7 安装MySQL 5.7 (通用二进制包)

    1.下载安装包 下载地址 https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz ...

  8. -bash: ./bak_1.py: /usr/bin/python^M: bad interpreter: 没有那个文件或目录

    在Windows的PyCharm中编写了一个Python文件,然后上传至CentOS中,已经添加执行权限,但是仍然会报如下的错误: 代码如下: #!/usr/bin/python # -*- codi ...

  9. 洛谷P2828 Switching on the Lights(开关灯)

    P2828 Switching on the Lights(开关灯) 题目背景 来源:usaco-2015-dec Farm John 最近新建了一批巨大的牛棚.这些牛棚构成了一个N*N的矩形网络.( ...

  10. JSP-模拟银行卡账号密码登录页面跳转

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...