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

leetcode67. 二进制求和,简单模拟

leetcode67. 二进制求和

给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。

示例 1:
输入:a = “11”, b = “1”
输出:“100”

示例 2:
输入:a = “1010”, b = “1011”
输出:“10101”

提示:
1 <= a.length, b.length <= 104
a 和 b 仅由字符 ‘0’ 或 ‘1’ 组成
字符串如果不是 “0” ,就不含前导零
在这里插入图片描述

题目描述

给定两个二进制字符串,返回它们相加的结果。

算法分析

这个问题可以通过直接模拟二进制加法来解决。我们首先确保两个字符串的长度相同,然后从右向左逐位相加。如果某一位相加的结果大于 1,则需要进位。最后,我们将结果转换为字符串形式。

算法步骤

  1. 初始化两个字符串 ab
  2. 使用循环和字符串操作,确保 ab 的长度相同。
  3. 从右向左遍历 ab 的每个字符,进行二进制加法。
  4. 如果某一位相加的结果大于 1,则需要进位。
  5. 将最终的结果转换为字符串形式。
  6. 如果最高位是 1,则需要在结果前添加字符 ‘1’。

算法流程

开始
初始化两个字符串 a 和 b
确保 a 和 b 的长度相同
从右向左进行二进制加法
处理进位
将结果转换为字符串
处理最高位的进位
结束

具体代码

class Solution {
public:string addBinary(string a, string b) {int al = a.size();int bl = b.size();while(al < bl) //让两个字符串等长,若不等长,在短的字符串前补零,否则之后的操作会超出索引{a = '0' + a;++ al;}while(al > bl){b = '0' + b;++ bl;}for(int j = a.size() - 1; j > 0; -- j) //从后到前遍历所有的位数,同位相加{a[j] = a[j] - '0' + b[j];if(a[j] >=  '2') //若大于等于字符‘2’,需要进一{a[j] = (a[j] - '0') % 2 + '0';a[j-1] = a[j-1] + 1;}}a[0] = a[0] - '0' + b[0]; //将ab的第0位相加if(a[0] >= '2') //若大于等于2,需要进一{a[0] = (a[0] - '0') % 2 + '0';a = '1' + a;}return a;}
};

算法分析

复杂度分析

  • 时间复杂度:O(max(a.size(), b.size()),其中 a.size()b.size() 分别是两个字符串的长度。
  • 空间复杂度:O(1),我们不需要额外的空间来存储数据。

易错点

  • 在确保两个字符串长度相同时,确保正确地添加零。
  • 在进行二进制加法时,确保正确地处理进位。
  • 在将结果转换为字符串时,确保正确地处理最高位的进位。

注意事项

  • 确保在处理字符串时不要超出字符串的边界。
  • 在进行字符转换时,确保不会覆盖任何字符。

相似题目

题目链接
二进制加法https://leetcode.com/problems/add-binary/
反转字符串https://leetcode.com/problems/reverse-string/
字符串转换整数https://leetcode.com/problems/string-to-integer-atoi/
整数转换字符串https://leetcode.com/problems/integer-to-roman/

相关文章:

leetcode67. 二进制求和,简单模拟

leetcode67. 二进制求和 给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 示例 1&#xff1a; 输入:a “11”, b “1” 输出&#xff1a;“100” 示例 2&#xff1a; 输入&#xff1a;a “1010”, b “1011” 输出&#xff1a;“10101” …...

Python:读写操作

一、读写txt 模式&#xff1a; rawx 【读、加写&#xff08;add 无则创建&#xff09;、覆盖写、新创建写&#xff08;无则报错&#xff09;】 bt【可以和上面四个组合使用&#xff0c;分别代表‘读写都行’、‘二进制’、‘文本模式’】 with open(药品数据.txt,r,encodingu…...

软体水枪在灭火工作中发挥什么作用_鼎跃安全

火灾&#xff0c;这一频繁侵袭我们日常生活的灾难性事件&#xff0c;以其迅猛之势对人类的生存环境与日常生活构成了极其严重的破坏与威胁。它不仅能够在瞬间吞噬财产&#xff0c;更可怕的是&#xff0c;它无情地剥夺了生命&#xff0c;破坏了家庭&#xff0c;给社会留下了难以…...

ES与MySQL数据同步实现方式

1.什么是数据同步: 1.Elasticsearch中的酒店数据来自于mysql数据库&#xff0c;因此mysql数据发生改变时&#xff0c;Elasticsearch也必须跟着改变&#xff0c;这个就是Elasticsearch与mysql之间的数据同步 2.数据同步实现方式&#xff1a; 常见的数据同步方案有三种&#x…...

Prometheus 服务发现

一、基于文件的服务发现 基于文件的服务发现是仅仅略优于静态配置的服务发现方式&#xff0c;它不依赖于任何平台或第三方服务&#xff0c;因而也是最为简单和通用的实现方式。 Prometheus Server 会定期从文件中加载 Target 信息&#xff0c;文件可使用 YAML 和 JSON 格式&am…...

2.复杂度分析

2.1 算法效率评估 在算法设计中&#xff0c;我们先后追求以下两个层面的目标。 找到问题解法&#xff1a;算法需要在规定的输入范围内可靠地求得问题的正确解。寻求最优解法&#xff1a;同一个问题可能存在多种解法&#xff0c;我们希望找到尽可能高效的算法。 也就是说&a…...

ensp小实验(ospf+dhcp+防火墙)

前言 今天给大家分享一个ensp的小实验&#xff0c;里面包含了ospf、dhcp、防火墙的内容&#xff0c;如果需要文件的可以私我。 一、拓扑图 二、实训需求 某学校新建一个分校区网络&#xff0c;经过与校领导和网络管理员的沟通&#xff0c;现通过了设备选型和组网解决方案&…...

Web服务器——————nginx篇

一.What is Web服务器 Web服务器介绍 Web服务器&#xff08;Web Server&#xff09;是指驻留于因特网上某种类型计算机的程序&#xff0c;该程序可以向Web浏览器&#xff08;如Chrome、Firefox、Safari等&#xff09;等客户端提供文档&#xff0c;也可以放置网站文件&#…...

【实战教程】一键升级CentOS 7.9.2009至OpenSSL 1.0.2u:加固你的Linux服务器安全防线!

文章目录 【实战教程】一键升级CentOS 7.9.2009至OpenSSL 1.0.2u&#xff1a;加固你的Linux服务器安全防线&#xff01;一、 背景二、 升级步骤2.1 检查 OpenSSL 版本2.2 安装 OpenSSL 依赖包2.3 下载 OpenSSL 的新版本2.4 解压缩下载的文件2.5 编译并安装 OpenSSL2.5.1 切换到…...

React 使用ref属性调用子组件方法(也可以适用于父子传参)

注意&#xff1a;①需使用hooks函数组件 ②使用了antDesign组件库&#xff08;可不用&#xff09; 如何使用 父组件代码 import React, { useState, useRef, useEffect } from react; import { Button } from antd; import Child from ./components/child;export defau…...

Linux CentOS java JDK17

1. 下载 cd /usr/local/ wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz 2. 解压 tar -zxf jdk-17_linux-x64_bin.tar.gz 3.配置环境变量 vim /etc/profile // 在末尾处添加 export JAVA_HOME/usr/local/jdk-17.0.12 #你安装jdk的路径&…...

迭代与递归

算法中会经常遇见重复执行某个任务&#xff0c;那么如何实现呢&#xff0c;本文将详细介绍两种实现方式&#xff0c;迭代与递归。 本文基于 Java 语言。 一、迭代 迭代&#xff08;iteration&#xff09;&#xff0c;就是说程序会在一定条件下重复执行某段代码&#xff0c;直…...

wo是如何克服编程学习中的挫折感的?

你是如何克服编程学习中的挫折感的&#xff1f; 编程学习之路上&#xff0c;挫折感就像一道道难以逾越的高墙&#xff0c;让许多人望而却步。然而&#xff0c;真正的编程高手都曾在这条路上跌倒过、迷茫过&#xff0c;却最终找到了突破的方法。你是如何在Bug的迷宫中找到出口的…...

vue3基础ref,reactive,toRef ,toRefs 使用和理解

文章目录 一. ref基本用法在模板中使用ref 与 reactive 的区别使用场景 二. reactive基本用法在模板中使用reactive 与 ref 的区别使用场景性能优化 三. toRef基本用法示例在组件中的应用主要用途对比 ref 和 toRef 四. toRefs基本用法示例在组件中的应用主要用途对比 ref 和 t…...

【Python机器学习】NLP的部分实际应用

自然语言处理在现实中非常多的应用&#xff0c;下表是其中的一些例子&#xff1a; 应用示例1示例2示例3搜索web文档自动补全编辑拼写语法风格对话聊天机器人助手行程安排写作索引用语索引目录电子邮件垃圾邮件过滤分类优先级排序文本挖掘摘要知识提取医学诊断法律法律断案先例…...

LLM 压缩之二: ShortGPT

0. 资源链接 论文: https://arxiv.org/pdf/2403.03853 项目代码: 待开源 1. 背景动机 现有的大语言模型 LLM 推理存在以下问题&#xff1a; LLM 模型因为 scale law 极大的提高模型的预测能力&#xff0c;但是同样带来较大的推理延时&#xff1b;对于 LLM 应用部署带来较大…...

EmguCV学习笔记 VB.Net 5.2 仿射变换

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…...

Fink初识

文章目录 1. Flink核心组件2. Flink核心概念3. 执行应用程序的三种模式3.1 session mode3.2 per-job mode3.3 application mode 4. Job Manager4.1 Resource Manager4.2 Dispatcher4.3 Job Master 5. Watermark6. State7.时间属性7.1 处理时间 processing time7.2 事件时间 Eve…...

PyTorch的torchvision内置数据集使用,transform+pytorch联合使用

一、PyTorch的torchvision内置数据集介绍 我们前面的文章里谈到的数据集是我们自己找的一些自定义数据集。那么在Pytorch中存在2种数据集&#xff08;Dataset&#xff09;&#xff0c;即内置数据集&#xff08;Built-in dataset&#xff09;和自定义数据集&#xff08;Custom d…...

MT1619 (A/B/C对应18W/22W/25W)如何避免温度高、电磁干扰

MT1619系列是一款开关电源芯片&#xff0c;其内部集成了一颗高集成度、高性能的电流模式 PWM 控制器和一颗功率 MOSFET。MT1619 具有恒功率功能&#xff0c;特别适用于 PD 充电器、电源适配器等中小功率的开关电源设备。极低的启动电流与工作电流、以及轻载或者无负载情况下的 …...

Nix构建确定性AI编程环境:解决Cursor编辑器依赖冲突难题

1. 项目概述&#xff1a;当代码编辑器遇上Nix的确定性魔法 最近在折腾开发环境时&#xff0c;我遇到了一个老生常谈但又无比头疼的问题&#xff1a;团队里新来的同事怎么也跑不起来我本地运行得好好的一个代码辅助工具链。依赖版本冲突、系统库路径不对、甚至是因为他用的macO…...

Token工厂:从“卖流量”到“卖Token”:中国移动砸百亿建Token生态,三大运营商的AI战争升级,阿里,百度,华为,字节跟进

5月9日&#xff0c;2026移动云大会上&#xff0c;中国移动市场经营部总经理邱宝华扔出一个新概念——"Token运营体系"。未来3-5年&#xff0c;中国移动将投入百亿级Token生态资源&#xff0c;建设千亿级算力基础设施&#xff0c;携手共创万亿级AI产业价值。"百亿…...

多维子集和问题:NP难问题的算法与应用解析

1. 多维子集和问题概述多维子集和问题(Multi-dimensional Subset Sum Problem)是计算复杂度理论中的经典NP难问题。简单来说&#xff0c;它要求在给定的n维向量集合中&#xff0c;找出一个子集&#xff0c;使得该子集中所有向量在每一维上的和恰好等于目标向量对应的分量。这个…...

为AI编程助手构建安全防线:Cursor自定义规则实战指南

1. 项目概述&#xff1a;为AI编程助手装上“安全护栏” 如果你和我一样&#xff0c;深度使用Cursor这类AI编程助手&#xff0c;那你一定体验过它带来的效率革命。它能帮你生成代码、重构函数、甚至解释复杂的逻辑&#xff0c;就像一个不知疲倦的编程伙伴。但硬币总有另一面——…...

怎么找到一个行业的源头工厂、绕开中间商?一套五步识别流程

你下了单&#xff0c;货到了&#xff0c;质量也还行。但心里一直有个疙瘩&#xff1a;这家供应商到底是自己在生产&#xff0c;还是从别处转手赚了你一道差价&#xff1f; 这个问题对采购方和跨境卖家不是洁癖&#xff0c;是真金白银。同一款产品&#xff0c;源头工厂和中间商的…...

AI智能体GUI交互实战:从原理到实现,让AI玩转桌面应用

1. 项目概述&#xff1a;一个能“玩”游戏的AI智能体最近在AI智能体&#xff08;Agent&#xff09;的圈子里&#xff0c;一个名为“ChattyPlay-Agent”的开源项目引起了我的注意。乍一看名字&#xff0c;你可能会觉得它又是一个基于大语言模型&#xff08;LLM&#xff09;的聊天…...

基于BLE HID与旋转编码器打造双模式无线遥控器

1. 项目概述你有没有过这样的时刻&#xff1a;窝在沙发里看剧&#xff0c;想调个音量或者暂停一下&#xff0c;却不得不伸手去够茶几上的键盘或鼠标&#xff0c;打断那份沉浸的惬意&#xff1f;或者&#xff0c;在电脑上回味一些经典老游戏时&#xff0c;觉得用键盘移动、鼠标射…...

Pro Trinket:Arduino UNO的紧凑型替代方案与双模编程实战

1. Pro Trinket&#xff1a;当Arduino遇上“口袋工程学”如果你和我一样&#xff0c;在创客圈子里摸爬滚打多年&#xff0c;肯定经历过这样的场景&#xff1a;一个基于Arduino UNO的酷炫原型在面包板上运行得风生水起&#xff0c;但当你试图把它塞进一个精致的3D打印外壳&#…...

3分钟快速上手:ESP32 Arduino开发环境完整配置指南

3分钟快速上手&#xff1a;ESP32 Arduino开发环境完整配置指南 【免费下载链接】arduino-esp32 Arduino core for the ESP32 family of SoCs 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 想在熟悉的Arduino环境中开发强大的ESP32物联网项目吗&…...

训练篇第9节:FlashAttention深度解析(一)——原理与CUDA实现

从 O(N) 到 O(N),FlashAttention 用一记“IO感知”的巧劲,彻底解锁了Transformer处理超长序列的能力 前言 回溯整个训练篇,我们已经系统性地打怪升级:从显存优化的“三板斧”(梯度累积、激活重计算、碎片化管理),到分布式训练的并行策略(数据并行、模型并行、流水线并…...