开源地址:https://github.com/jiauzhang/algorithms


题目描述

* https://leetcode-cn.com/problems/add-binary
* 给定两个二进制字符串,返回他们的和(用二进制表示)。
* 输入为非空字符串且只包含数字 1 和 0。
*
* 示例 1:
* 输入: a = "11", b = "1"
* 输出: "100"
*
* 示例 2:
* 输入: a = "1010", b = "1011"
* 输出: "10101"

题目描述

* 1. 二进制运算相当简单了,不同之处在于这里是操作的字符串
* 所以需要程序实现字符相加的二进制运算
* 2. 两个二进制字符相加,再加上进位位,总共有种可能的结果
* 0, 1, 2, 3,所以最直白的做法就是写四个 if 语句即可
* 3. 但是为了进一步优化,我们可以定义一个数组,如程序中所示
* 最后直接根据数组获取进位位的值和当前和的结果即可
* 本来需要四条 if 语句的操作直接一步就可以解决了!

题目描述

class Solution {
public:
string addBinary(string a, string b) {
if (a.size() < b.size()) {
do_add(b, a);
return b;
}
else {
do_add(a, b);
return a;
}
} void do_add(string &a, string &b) {
char cs[4] = {0, 0, 1, 1};
char ss[4] = {'0', '1', '0', '1'};
char carry = 0;
char base = '0';
int i = a.size() - 1;
int j = b.size() - 1;
while (j >= 0 || (carry && i >= 0)) {
char sum = 0;
if (j >= 0) {
sum += b[j] - base;
} sum += a[i] - base;
sum += carry;
a[i] = ss[sum];
carry = cs[sum]; i--;
j--;
} if (carry)
a = '1' + a;
}
};

【每天一题】LeetCode 0067. 二进制求和的更多相关文章

  1. LeetCode:二进制求和【67】

    LeetCode:二进制求和[67] 题目描述 给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11" ...

  2. Java实现 LeetCode 67 二进制求和

    67. 二进制求和 给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1 ...

  3. LeetCode 简单 -二进制求和(105)

    给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1" 输出: ...

  4. 力扣(LeetCode)二进制求和 个人题解

    给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1" 输出: ...

  5. [LeetCode]67. 二进制求和(字符串)(数学)

    题目 给你两个二进制字符串,返回它们的和(用二进制表示). 输入为 非空 字符串且只包含数字 1 和 0. 题解 两个字符串从低位开始加,前面位不够补0.维护进位,最后加上最后一个进位,最后反转结果字 ...

  6. 【Leetcode】二进制求和

    解题思路: 1. 首先在两个字符串前面补‘0’,使它们等长.否则要一直监督操作是否超出两个字符串的索引. 2. 从后向前遍历所有位数,同位相加.字符相加,利用ASCII码,字符在内部都用数字表示,我们 ...

  7. Leecode刷题之旅-C语言/python-67二进制求和

    /* * @lc app=leetcode.cn id=67 lang=c * * [67] 二进制求和 * * https://leetcode-cn.com/problems/add-binary ...

  8. # Leetcode 67:Add Binary(二进制求和)

    Leetcode 67:Add Binary(二进制求和) (python.java) Given two binary strings, return their sum (also a binar ...

  9. LeetCode:二进制手表【401】

    LeetCode:二进制手表[401] 题目描述 二进制手表顶部有 4 个 LED 代表小时(0-11),底部的 6 个 LED 代表分钟(0-59). 每个 LED 代表一个 0 或 1,最低位在右 ...

随机推荐

  1. .net压缩文件

    首先nuget安装DotNetZip 代码很少

  2. Java集合框架 10 连问,你有被问过吗?

    首先要说一下,本文对这些Java集合框架的面试题只做了一个总结式的回答,对每一道题目,都值得深入去了解一下(什么是扎实基本功,这些就是基本功~~),后续可能对每一道题目拆开独立篇章来深入讲解一下. 大 ...

  3. 删除排序数组中的重复项II

    Given a sorted array nums, remove the duplicates in-place such that duplicates appeared at most twic ...

  4. P1548 棋盘问题

    题目描述 设有一个N \times MN×M方格的棋盘(1≤N≤100,1≤M≤100)(1≤N≤100,1≤M≤100) 求出该棋盘中包含有多少个正方形.多少个长方形(不包括正方形). 例如:当 N ...

  5. CentOS 7 Cobbler 配置 YUM仓库

    通过Cobbler配置内网YUM仓库 在上一篇Cobbler 安装中,配置好了Cobbler 下面来通过Cobbler来配置内网的YUM仓库 这里可以同步所有版本的yum源,增加内网的yum安装下载速 ...

  6. C#使用Consul集群进行服务注册与发现

    前言 我个人觉得,中间件的部署与使用是非常难记忆的:也就是说,如果两次使用中间件的时间间隔比较长,那基本上等于要重新学习使用. 所以,我觉得学习中间件的文章,越详细越好:因为,这对作者而言也是一份珍贵 ...

  7. python模块2

    python模块2 相关概念 模块名是标识符(需要按照标识符的写法编写) Pyc文件 在使用模块的项目中会生成一个_pycache_文件,里面存放着编译过的(模块的)字节码缓存文件(因为模块一般很少有 ...

  8. xshell使用xftp传输文件、使用pure-ftpd搭建ftp服务

    6月25日任务 15.4 xshell使用xftp传输文件15.5 使用pure-ftpd搭建ftp服务扩展vsftp使用mysql存放虚拟用户并验证 http://www.aminglinux.co ...

  9. ElasticSearch的API使用

    前言:之前写过如何安装ElasticSearch(以下简称ES)以及简单的crud的使用实例的博客,不过ElasticSearch的版本变化太快,像之前的5.6版本使用的TransPortClient ...

  10. openstack网络(四)-虚机流量分析

    几种网络名词解释 使用LinuxBridge时虚机流量分析 VLAN FLAT Local VXLAN 使用OVS时虚机流量分析 几种网络名词解释 1.local网络:local网络是与其他网络和节点 ...