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

leetcode做题笔记67

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

思路一:模拟题意

void reserve(char* s) {int len = strlen(s);for (int i = 0; i < len / 2; i++) {char t = s[i];s[i] = s[len - i - 1], s[len - i - 1] = t;}
}char* addBinary(char* a, char* b) {reserve(a);reserve(b);int len_a = strlen(a), len_b = strlen(b);int n = fmax(len_a, len_b), carry = 0, len = 0;char* ans = (char*)malloc(sizeof(char) * (n + 2));for (int i = 0; i < n; ++i) {carry += i < len_a ? (a[i] == '1') : 0;carry += i < len_b ? (b[i] == '1') : 0;ans[len++] = carry % 2 + '0';carry /= 2;}if (carry) {ans[len++] = '1';}ans[len] = '\0';reserve(ans);return ans;
}

时间复杂度O(n),空间复杂度O(n)

分析:

本题要算二进制求和,可想到先将数组内的字符翻转后再进行相加。最后再将ans数组翻转得到答案。

总结:

本题考察对字符串的应用,掌握翻转的方法即可解决

http://www.lryc.cn/news/120069.html

相关文章:

  • fastadmin 自定义搜索分类和时间范围
  • Oracle Data Redaction与Data Pump
  • 设计模式(6)原型模式
  • pywinauto结合selenium实现文件上传
  • 【Java多线程学习7】Java线程池技术
  • VMware虚拟机NAT模式Ubuntu无法上网解决方案
  • Linux中无法忘记mysql密码处理办法
  • vue 使用 el-upload 上传文件(自动上传/手动上传)
  • 服务器遭受攻击之后的常见思路
  • C语言学习笔记 使用vscode外部console出现闪退-12
  • 从Spring源码看Spring如何解决循环引用的问题
  • 03 - 通过git log可以查看版本演变历史
  • 【图论】单源最短路
  • 闻道网络:2023宠物消费网络营销洞察数据报告(附下载)
  • Docker 安装和架构说明
  • 101. 对称二叉树
  • cmake应用:集成gtest进行单元测试
  • 静态时序分析与时序约束
  • YOLOv5基础知识入门(3)— 目标检测相关知识点
  • 10个AI绘图生成器让绘画更简单
  • 干货满满的Python知识,学会这些你也能成为大牛
  • 【Leetcode】155. 最小栈、JZ31 栈的压入、弹出序列
  • 网络安全(黑客技术)自学笔记
  • iOS学习—制作全局遮罩
  • GRPC-连接池-GPT
  • YOLOv5、YOLOv8改进: GSConv+Slim Neck
  • 重发布选路问题
  • LinearAlgebraMIT_9_LinearIndependence/SpanningASpace/Basis/Dimension
  • Redission 解锁异常:attempt to unlock lock, not locked by current thread by node id
  • AIGC技术揭秘:探索火热背后的原因与案例