每日一练(39):二进制求和

简介: 给你两个二进制字符串,返回它们的和(用二进制表示)

给你两个二进制字符串,返回它们的和(用二进制表示)。


输入为 非空 字符串且只包含数字 1 和 0。


示例 1:


输入: a = "11", b = "1"

输出: "100"


示例 2:


输入: a = "1010", b = "1011"

输出: "10101"


提示:


每个字符串仅由字符 '0' 或 '1' 组成。


1 <= a.length, b.length <= 10^4


字符串如果不是 "0" ,就都不含前导零。


来源:力扣(LeetCode)


链接:https://leetcode-cn.com/probl...


方法一:模拟运算


思路分析


模拟直接计算,就是按照类似10进制计算方式,考虑进位


string addBinary(string a, string b) {
    //  先倒序
    reverse(a.begin(), a.end());
    reverse(b.begin(), b.end());
    int na = a.size();
    int nb = b.size();
    int n = max(na, nb);
    string res = "";
    int curr = 0;
    for (int i = 0; i < n; ++i)
    {
        curr += i < na ? a[i] == '1' : 0;
        curr += i < nb ? b[i] == '1' : 0;
        res.push_back(curr % 2 ? '1' : '0');
        curr /= 2;
    }
    if (curr)
    {
        res.push_back('1');
    }
    reverse(res.begin(), res.end());
    return res;
}


方法二:模拟运算优化(LeetCode英文网站大佬写法)


思路分析


模拟直接计算,就是按照类似10进制计算方式,考虑进位


string addBinary(string a, string b) {
    string s;
    s.reserve(a.size() + b.size());
    int c = 0, i = a.size() - 1, j = b.size() - 1;
    while(i >= 0 || j >= 0 || c == 1)
    {
        c += i >= 0 ? a[i--] - '0' : 0;
        c += j >= 0 ? b[j--] - '0' : 0;
        s.push_back((c & 1) + '0');
        c >>= 1;
    }
    reverse(s.begin(), s.end());
    return s;
}


目录
相关文章
|
JavaScript
JS自动生成速记符、拼音简写/拼音的声母(例如:“你挚爱的强哥”转换为“NZADQG”)。提取首字母,返回大写形式;提取拼音, 返回首字母大写形式(全拼)。
JS自动生成速记符、拼音简写/拼音的声母(例如:“你挚爱的强哥”转换为“NZADQG”)。提取首字母,返回大写形式;提取拼音, 返回首字母大写形式(全拼)。
27870 0
|
存储 算法 安全
深度解析JVM世界:JVM内存分配
深度解析JVM世界:JVM内存分配
|
数据挖掘 项目管理 调度
「软件项目管理」一文详解软件项目质量计划
该文章全面介绍了软件项目质量计划的制定方法,涵盖了质量模型、质量管理过程、质量保证与控制技术,并提出了软件质量改善的具体建议,帮助项目管理人员有效地提升软件产品的质量水平。
「软件项目管理」一文详解软件项目质量计划
|
机器学习/深度学习 存储 PyTorch
深度学习训练时混合精度的作用
在深度学习训练过程中,混合精度(Mixed Precision)是指同时使用不同的数值精度(如16位浮点数和32位浮点数)来进行计算。
661 2
|
Ubuntu 编译器 C++
【Conan 入门教程 】在Ubuntu上使用Conan编译C++第三方库:一站式解决方案
【Conan 入门教程 】在Ubuntu上使用Conan编译C++第三方库:一站式解决方案
4159 1
|
SQL 关系型数据库 MySQL
c.t.t.handler.GlobalExceptionHandler : 捕获异常:org.springframework.jdbc.BadSqlGrammarException:
c.t.t.handler.GlobalExceptionHandler : 捕获异常:org.springframework.jdbc.BadSqlGrammarException:
299 0
MOTOROLA MVME162-412 离散部分来降低其平均功率
MOTOROLA MVME162-412 离散部分来降低其平均功率
314 0
MOTOROLA MVME162-412 离散部分来降低其平均功率
|
XML SQL 安全
【web渗透思路】敏感信息泄露(网站+用户+服务器)
【web渗透思路】敏感信息泄露(网站+用户+服务器)
1239 0
【web渗透思路】敏感信息泄露(网站+用户+服务器)
|
安全 应用服务中间件 PHP
WordPress 定制开发常用错误需要关注的 5 个主要方面
ordPress 定制开发常用错误有哪些?如何预防WordPress 的开发错误?网站停机令人沮丧,但 WordPress 显示错误是有充分理由的。然而,好消息是大多数常见的 WordPress 错误都是由相同的问题和错误配置引起的,因此相对容易排除故障。北京六翼的开发工程师针对WordPress 定制开发常用错误和预防的问题给大家科普一下。
WordPress 定制开发常用错误需要关注的 5 个主要方面
【STM32】高级定时器TIM1计数中断配置
【STM32】高级定时器TIM1计数中断配置
1392 0