【蓝桥杯】每天一题,理解逻辑(4/90)【Leetcode 二进制求和】

ops/2025/3/19 18:09:18/

题目描述

在这里插入图片描述

我们解析一下题目

  • 我们可以理解到两个主要信息
    • 给的是二进制的字符串
    • 返回他们的和

我们知道,十进制的加减法需要进位,例如:9+7=16是因为9+1之后进了一位,二进制也是如此,只不过十进制是逢10进1,二进制是逢2进1.
但是我们这里还需要注意两点

  • 题目给的是字符串
  • 返回的和也是字符串

算法原理[[leetCode]]

先说结论

  • 核心打法:
    • 字符串转数字
      结果数字再转字符

因为按照我们的习惯,加法喜欢从后面往前开始依次加
所以我们这里定义一个循环
{

  • 把每个字符串的最后一个字符转成数字
  • 用sum变量记录他们的和
  • push他们的和%2+'0’到一个新的字符串里面
  • 用carry记录他们的进位
    }

这里的carry的值可能会出现三种情况

  • 和有3中情况
    - 0:%2还是0,直接写入
    - 1:%2还是1,小于2,直接写入
    - 2:%2是0,但是要进位,写入0之后,用carry值记录他们的进位1
  • 然后在循环中carry的值给到sum,一直带着进位,直到遇到能写入的位置
  • 因为我们是从后往前依次加,但是结果是要从前往后读取的,所以我们要把结果反转一下

代码

class Solution {public:string addBinary(string a, string b) {int i=a.size()-1;int j=b.size()-1;int carry=0;string result;while(i>=0||j>=0||carry>0){int sum=carry;if(i>=0){sum+=a[i]-'0';i--;}if(j>=0){sum+=b[j]-'0';j--;}result.push_back((sum%2)+'0');carry=sum/2;}reverse(result.begin(),result.end());return result;}};

在这里插入图片描述

时间复杂度:
在这里插入图片描述


http://www.ppmy.cn/ops/167078.html

相关文章

Go string 字符串底层逻辑

在 Go 语言中,string 类型的底层结构是一个结构体,包含两个字段:一个指向字节数组的指针和该字节数组的长度。以下是其在 Go 源码中的大致定义:type stringStruct struct {str unsafe.Pointerlen int } str:这是一个指…

Git的基本指令

一、回滚 1.git init 在项目文件夹中打开bash生成一个.git的子目录,产生一个仓库 2.git status 查看当前目录下的所有文件的状态 3.git add . 将该目录下的所有文件提交到暂存区 4.git add 文件名 将该目录下的指定文件提交到暂存区 5.git commit -m 备注信…

R语言入门课| 02 R及Rstudio的下载与安装

视频教程 先上教程视频,B站同步播出: https://www.bilibili.com/video/BV1miNVeWEkw 完整视频回放可见:R语言入门课回放来啦 "R语言入门课"是我们认为生信小白入门不得不听的一个课程,我们也为这个课程准备了许多干…

ffmpeg基础整理

FFmpeg 是一个开源的跨平台 多媒体处理工具 ,可以用于 录制、转换、编辑、流式传输 音视频文件。它支持几乎所有常见的音视频格式,功能极其强大,是开发者、视频创作者常用的命令行工具。 一、FFmpeg 核心功能 格式转换:将视频/音频…

【SpringMVC】常用注解:@RequestBody

1.作用 用于获取请求实体内容,直接使用得到的是keyvalue&keyvalue的数据。获取请求实体内容不适用get请求。 2.属性 required 描述是否有请求体,默认值为true。当取值为true时,get 请求方式会报错。如果取值为false,get请…

pytorch小记(十一):pytorch中 `torch.nn.Dropout` 详解

pytorch小记(十一):pytorch中 torch.nn.Dropout 详解 PyTorch torch.nn.Dropout 详解1. 什么是 Dropout?2. torch.nn.Dropout 语法3. torch.nn.Dropout 示例📌 示例 1:基本用法📌 示例 2&#x…

JAVA中关于图形化界面的学习(GUI)动作监听,鼠标监听,键盘监听

动作监听: 先创建一个图形化界面,接着创建一个按钮对象,设置按钮的大小。 添加一个addActionListener(); addActionListener() 方法定义在 java.awt.event.ActionListener 接口相关的上下文中,许多支持用户交互产生…

【动态规划】--- 路径问题

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 算法Journey 🏠 不同路径 📌 题目解析 62. 不同路径 - 力扣(LeetCode) 📌 算法原理 解法一 …