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

线性表 力扣67. 二进制求和

题目 67. 二进制求和

翻译

主要思路

核心思路是像竖式计算一样,不过需要将字符串a和b反转后逐位进行二进制计算得到字符串c,最后再将c反转就是答案

逐位计算的时候利用count,在将a和b当前位置数字相加后通过模2来决定字符串c对应位置的数字

count /= 2,是清除了当前的进位,同时保留了下一位的进位

最后如果count不为0,说明字符串c还要进一位

第一次写错误

代码

class Solution {
public:string addBinary(string a, string b) {string ansString;   int scanlLength = max(a.size(), b.size());    //需要扫描的长度取两个字符串中最大值reverse(a.begin(), a.end());    //翻转两个字符串reverse(b.begin(), b.end());int count = 0;  //count表示是否进位for(int i = 0; i < scanlLength; i++) {count += i < a.length() ? (a.at(i) == '1') : 0;  //count 上递增,如果i还小于字符串a的长度,看字符串a当前位置是不是1,如果是1,a.at(i) == '1'返回1,则count递增1,否则递增0,下面一条语句同理 count += i < b.length() ? (b.at(i) == '1') : 0;ansString.push_back((count % 2) ? '1' : '0');   //count表示当前位计算结果,如果count % 2 == 0,说明要么计算结果是0,不用进位,当前位就是0,要么计算结果是2,如果是1,要么计算结果是3,要进位;进位后是1,要么计算结果是1,不用进位count /= 2;     //保留了下一位的进位}if(count) { //如果count不为0,表示还要往下进一位ansString.push_back('1');}reverse(ansString.begin(), ansString.end());return ansString;}
};
http://www.lryc.cn/news/250567.html

相关文章:

  • 2312skia,13画布包入门
  • 【网络安全技术】消息认证技术
  • 智慧安防三大信息技术:云计算、大数据及人工智能在视频监控EasyCVR中的应用
  • 接口测试基础知识
  • C++多线程之通过成员函数作为线程入口
  • word、excel文件转PDF(documents4j方式,简单)
  • 【Linux】:信号(三)捕捉
  • 数据结构 / 队列 / 循环队列 / 概念
  • elasticsearch 内网下如何以离线的方式上传任意的huggingFace上的NLP模型(国内闭坑指南)
  • vue中中的动画组件使用及如何在vue中使用animate.css
  • MATLAB 模型参考自适应控制 - Model Reference Adaptive Control
  • 【如何用批处理文件实现自动编译Keil工程和C# Visual Studio工程】
  • 大模型的实践应用11-“书生”通用大模型的搭建与模型代码详细介绍,以及快速使用方法
  • 【开发PaaS】基于Postgresql的开发平台Supabase
  • 前端开启gzip优化页面加载速度
  • 用Java写一个俄罗斯方块
  • 应用于智慧金融的AI边缘计算盒子+AI算法软硬一体化方案
  • 目标检测——Faster R-CNN算法解读
  • Wireshark (一)安装入门 —— 软件介绍
  • Web框架与Django路由层
  • 什么是CAS, 什么是AQS
  • 蓝桥杯每日一题2023.12.1
  • 正则表达式从放弃到入门(1):“正则表达式”是什么?
  • SQL解惑 - 谜题2
  • FWT+高维前缀和:Gym - 103202M
  • 【C++】string类的接口综合运用
  • 分布式ID生成框架Leaf升级踩坑
  • 常用的设计模式
  • git的相关实用命令
  • 【使用`model.status`来获取gurobi求解过程中的模型状态】