【每天一题】LeetCode 0067. 二进制求和

开源地址: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. 二进制求和的更多相关文章
- LeetCode:二进制求和【67】
LeetCode:二进制求和[67] 题目描述 给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11" ...
- Java实现 LeetCode 67 二进制求和
67. 二进制求和 给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1 ...
- LeetCode 简单 -二进制求和(105)
给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1" 输出: ...
- 力扣(LeetCode)二进制求和 个人题解
给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1" 输出: ...
- [LeetCode]67. 二进制求和(字符串)(数学)
题目 给你两个二进制字符串,返回它们的和(用二进制表示). 输入为 非空 字符串且只包含数字 1 和 0. 题解 两个字符串从低位开始加,前面位不够补0.维护进位,最后加上最后一个进位,最后反转结果字 ...
- 【Leetcode】二进制求和
解题思路: 1. 首先在两个字符串前面补‘0’,使它们等长.否则要一直监督操作是否超出两个字符串的索引. 2. 从后向前遍历所有位数,同位相加.字符相加,利用ASCII码,字符在内部都用数字表示,我们 ...
- Leecode刷题之旅-C语言/python-67二进制求和
/* * @lc app=leetcode.cn id=67 lang=c * * [67] 二进制求和 * * https://leetcode-cn.com/problems/add-binary ...
- # Leetcode 67:Add Binary(二进制求和)
Leetcode 67:Add Binary(二进制求和) (python.java) Given two binary strings, return their sum (also a binar ...
- LeetCode:二进制手表【401】
LeetCode:二进制手表[401] 题目描述 二进制手表顶部有 4 个 LED 代表小时(0-11),底部的 6 个 LED 代表分钟(0-59). 每个 LED 代表一个 0 或 1,最低位在右 ...
随机推荐
- Win 使用终端创建mysql数据库及使用(5)
删除你创建过的数据库newsql里面的所有表 这里必须安装了mysql,并且知道用户名密码IP地址.因为我用的window,所以只介绍Win使用cmd创建的方式 首先windown+R 出现窗口输入c ...
- 2019-9-12:渗透测试,基础学习,Linux下用户管理笔记
linus用户管理/etc/passwd 保存用户信息/etc/shadow 保存密码信息,第二部分 !表示密码没有设置 cat /etc/passwd | grep xxx:查看特定账户信息 use ...
- PL真有意思(六):子程序和控制抽象
前言 在之前我们把抽象定义为一种过程,程序员可以通过它将一个名字与一段可能很复杂的程序片段关联起来.抽象最大的意义就在于,我们可以从功能和用途的角度来考虑它,而不是实现. 在大多数程序设计语言中,子程 ...
- yum运行报错:File "/usr/libexec/urlgrabber-ext-down", line 28
[root@sdw1 bin]# vim /usr/libexec/urlgrabber-ext-down 再次执行yum命令,正常下载
- 《手把手教你》系列练习篇之6-python+ selenium自动化测试(详细教程)
1. 简介 前面文章我们了解了如何获取元素的text属性值,和判断元素是否显示在页面(is_displayed()方法),本文我们来学习下,判断一个控件是否被选中状态. 2. 验证控件是否被选中 还是 ...
- jQuery中带有异步Ajax代码的执行顺序
1.问题 在使用jQuery的时候想通过Ajax请求来放所需要的html代码中放值,但是请求回来却是空的,源代码如下: $("a").click(function() { // ...
- 在Tinymce编辑器里,集成数学公式
在以前,需要在Web页面显示数学公式,常用的都是先制作成图片,然后插入到页面里.这使得后期对数学公式的修改变的麻烦,同时也不利于搜索引擎搜索. 本文将介绍如何在TinyMce编辑器里集成数学公式.先看 ...
- luogu P2824 [HEOI2016/TJOI2016]排序
题目描述 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这个全排列序列进行 ...
- react-native Android release打包失败
npm run build报错(android) react-native 0.5x在安卓环境 gradle 3.x版本下编译release版本的时候提示编译失败,但是debug模式下是没有问题的. ...
- numpy的基本API(二)——维数操作
numpy的基本维数操作API iwehdio的博客园:https://www.cnblogs.com/iwehdio/ 1.np.copyto(dst, src) copyto方法将数组src复制到 ...