解题思路:

1. 首先在两个字符串前面补‘0’,使它们等长。否则要一直监督操作是否超出两个字符串的索引。

2. 从后向前遍历所有位数,同位相加。字符相加,利用ASCII码,字符在内部都用数字表示,我们不需要知道具体数值,但可知 ‘0’ - ‘0’ = 0, ‘0’ + 1 = ‘1’,以此类推。字符的加减、比较大小,实际上都是内部数字的加减、比较大小

3. 判断位数相加的结果,若大于等于字符‘2’,则需要向前一位进1.

class Solution {
public:
string addBinary(string a, string b) {
int al = a.size();
int bl = b.size();
int cl = al >= bl? al : bl;
cl++; for(int i = ; i < cl-al; i++)
a = '' + a; for(int j = ; j < cl-bl; j++)
b = '' + b; for(int k = cl - ; k > ; k--){
a[k] = a[k] - '' + b[k]; if(a[k] >= ''){ a[k-] = a[k-] + 1; a[k] = (a[k] - '') % + '';
}
} if (a[] == '')
a = a.substr(, cl-); return a;
}
};

上述解法,时间复杂度O(n)。

执行用时 :4 ms, 在所有 C++ 提交中击败了91.33%的用户
内存消耗 :8.8 MB, 在所有 C++ 提交中击败了38.37%的用户
 
附上一个大佬的解法,下回研究
https://leetcode-cn.com/problems/add-binary/solution/10xing-cdai-ma-by-destinyskid/

【Leetcode】二进制求和的更多相关文章

  1. leetcode 二进制求和 python

    class Solution: def addBinary(self, a, b): """ :type a: str :type b: str :rtype: str ...

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

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

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

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

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

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

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

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

  6. lintcode:Add Binary 二进制求和

    题目: 二进制求和 给定两个二进制字符串,返回他们的和(用二进制表示). 样例 a = 11 b = 1 返回 100 解题: 和求两个链表的和很类似 考虑进位,考虑最后一项的进位 0+0 = 0 不 ...

  7. leetcode-67.二进制求和

    leetcode-67.二进制求和 Points 数组 数学 题意 给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = &qu ...

  8. 二进制求和(LintCode)

    二进制求和 给定两个二进制字符串,返回他们的和(用二进制表示). 样例 a = 11 b = 1 返回 100 细节出了好多问题,提交了好多次... public class Solution { / ...

  9. leetcode -- 二进制

    leetcode -- 二进制 在学习编程语言的运算符时,大部分语言都会有与,或等二进制运算符,我在初期学习这些运算符的时候,并没有重点留意这些运算符,并且在后续的业务代码中也没有频繁的使用过,直到后 ...

  10. 每日一道 LeetCode (15):二进制求和

    每天 3 分钟,走上算法的逆袭之路. 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub: https://github.com/meteor1993/LeetCode Gitee ...

随机推荐

  1. jquery ajax get 数组参数

    对一些get请求,但方法参数要求是数组或集合的,如下 public virtual ActionResult Test(List<int> ids) { return Json(" ...

  2. [luogu 3175] [HAOI2015]按位或(min-max容斥+高维前缀和)

    [luogu 3175] [HAOI2015]按位或 题面 刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数字,与你手上的数字进行按位或运算.问期望多少秒后,你手上的数字变成2^n ...

  3. MySQL总结(5)

    视图 SELECT cust_name,cust_contact FROM customers,orders,orderitems WHERE customers.cust_id=orders.cus ...

  4. 搜索专题:Balloons

    搜索专题:Balloons 这道题一看与时间有关,第一想到的就是BFS,定义一个状态,包含每一个状态的剩余气球数,已经进行的时间和每一个志愿者上一次吹气球的时间: 每一次状态转换时,检查是否有没有使用 ...

  5. source与./执行的区别

    source与./执行的区别作用:使文件生效区别:1.source不需要文件有可执行(x)权限,而./需要文件有x权限,否则报错2.source执行是在当前shell中执行,./在当前shell的子s ...

  6. CentOS下配置Apache HTTPS

    一.安装Apache支持SSL/TLS yum install mod_ssl openssl 二.创建证书 证书(Cerificate)的基本作用是将一个公钥和安全个体(个人.公司.组织等)的名字绑 ...

  7. kubernets全套笔记

    Master/node Master核心组件: API server,Scheduler,Controller-Manager  etcd(存储组件) Node核心组件:  kubelet(核心组件) ...

  8. ArrayList与LinkedList的区别

    两者区别大致分为以下几点: 1.ArrayList采用的是采用的是数组形式保存数据,这种方式将对象放在连续的位置中(线性存储):LinkedList采用的将对象放在独立的空间中,每个空间还保留下一个节 ...

  9. Linux本机和远程服务器之间文件的上传和下载 rz sz

    tar zxvf lrzsz-0.12.20.tar.gz 解压安装包   下载地址:链接:https://pan.baidu.com/s/1KMS1QlyOhpXiYeaWdNBAyw 提取码:08 ...

  10. xavier_uniform/xavier_normal

    import math from torch.autograd import Variable import torch import torch.nn as nn import warnings w ...