当前位置: 首页 > news >正文

算法:二进制求和

题:给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。输入为 非空 字符串且只包含数字 1 和 0。

方法一: 直接将二进制字符串转为十进制再相加(方便简洁)

function addBinary (a, b) {
  a = BigInt(`0b${a}`); // 使用 BigInt 解析二进制字符串->十进制bigInt类型 0b:表示后面字符为二级制,0o:八进制  0x:十六进制   十进制不需要前缀
  b = BigInt(`0b${b}`);
  let c = a + b;
  return c.toString(2); // BigInt 的 toString 方法支持二进制输出
};

方法二: 模拟二进制加法逐位计算(性能好)

var addBinary = function (a, b) { 
  let i = a.length - 1;
  let j = b.length - 1;
  let result = '';
  let carry = 0;
  while (i >= 0 || j >= 0) { 
    let digitA = i >= 0 ? a[i] - '0' : 0;
    let digitB = j >= 0 ? b[j] - "0" : 0;
    let sum = digitA + digitB + carry;
    if (sum > 1) {
      carry = 1
      sum -= 2;
    } else {
      carry = 0
    }
    result = sum + result;
    i--;
    j--;
  }
  if (carry === 1) {
    result = '1' + result;
  }
  return result;
}
http://www.dtcms.com/a/108474.html

相关文章:

  • 从零构建大语言模型全栈开发指南:第四部分:工程实践与部署-4.3.3低代码开发:快速构建行业应用(电商推荐与金融风控案例)
  • Python 驱动周立功200U收发报文
  • 国产系统服务器识别不到SATA盘
  • STM32学习笔记之RCC模块(实操篇)
  • 横扫SQL面试——中位数问题
  • git tag
  • Linux 中CIFS和NFS使用说明
  • MCP学习总结
  • 基于RapidIO接口的DSP+GPU工业AI实时计算解决方案
  • ‘conda‘ 不是内部或外部命令,也不是可运行的程序或批处理文件
  • 【YOLOv8】YOLOv8改进系列(12)----替换主干网络之StarNet
  • 系统安全——文件监控-FileMonitor
  • 数据在内存中存储(C语言)
  • 杂篇-行业分类一二-2(通、专用设备制造,汽车制造)
  • (done) MIT6.824 Lecture 02 - RPC and Threads
  • stm32:sg90 和 mg90s舵机学习
  • Python----计算机视觉处理(Opencv:道路检测之提取车道线)
  • 好玩有趣的github开源项目分享(持续更新)
  • 【MySQL基础】 JSON函数入门
  • 代码随想录-动态规划18
  • 如何学习C++以及C++的宏观认知
  • AI:机器学习模型-线性回归
  • 清华大学:网络大模型NetGPT研究进展(2025)
  • 深入解析JavaScript混淆加密与Python逆向调用实战-题八
  • 蓝桥杯-算法基础-For循环
  • [CISSP] [5] 保护资产安全
  • Mybatis 如何自定义缓存?
  • UML 关系探秘:理论与实践双维度剖析
  • Cesium for Unreal 源码编译
  • php开发rest api,哪个框架最好