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

LeetCode:67.二进制求和

67. 二进制求和 - 力扣(LeetCode)

又是一道求和题,% / 在求和的用途了解了些,

目录

题目:

思路分析: 

博主代码:

官方代码: 

每日表情包:


题目:

思路分析: 

求和,就对齐单个字符式的求和以及转换成整型求和,当然转换成整型有溢出的烦恼。

遍历即可,不过得注意自己malloc的字符串要记得加上一个字符串的结束标志'\0'

既然是遍历就是时O(n)又因为是自己malloc返回,所以空O(n),

博主代码:

char AddCheck01(char ch1, char ch2, char flag)
{if (((ch1 + ch2 + flag) - 3 * '0') >= 2) return '1';else return '0';
}
char* addBinary(char* a, char* b) {//要想相加,对齐末位很有必要,所以先求长度//官解的reserve是变相的对齐相加int sizeA = strlen(a);int sizeB = strlen(b);char flag = '0';int size = (sizeA > sizeB ? sizeA : sizeB);char* Return = (char*)malloc(sizeof(char) * (size + 1));Return[size] = '\0';//很容易忘记的字符串要带的结束标志for (int i = 1; i <= size; ++i) {char Acur = (sizeA - i) >= 0 ? a[sizeA - i] : '0';char Bcur = (sizeB - i) >= 0 ? b[sizeB - i] : '0';Return[size - i] = Acur ^ Bcur ^ flag;flag = AddCheck01(Acur, Bcur, flag);//%,/,的相加看起来要好多了(之前的十进制链表的题用过)}if (flag == '1') {//可能的进一位情况char* tmp = (char*)malloc(sizeof(char) * (size + 2));memmove((tmp + 1), Return, sizeof(char) * (size + 1));tmp[0] = '1';free(Return);Return = tmp;}return Return;
}

官方代码: 

不喜欢这种malloc方式,在不进一位的情况下,相当于多开辟了空间,

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;
}作者:力扣官方题解
链接:https://leetcode.cn/problems/add-binary/solutions/299667/er-jin-zhi-qiu-he-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

每日表情包:

相关文章:

  • InternLM大模型实战-3.InternLM+Langchain搭建知识库
  • Map和Set(哈希表)
  • 【OpenHarmony硬件操作】风扇与温湿度模块
  • DarkSide针对VMware EXSI系统进行加密
  • CTR-----Click-Through Rate简单介绍
  • ClickHouse--04--数据库引擎、Log 系列表引擎、 Special 系列表引擎
  • 再说开源软件
  • 年假作业10
  • 【数据结构】11 堆栈(顺序存储和链式存储)
  • java客运管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • TCP和UDP相关问题(重点)——9.超时重传怎么实现的?
  • Docker- chapter 1
  • 【Linux学习】线程互斥与同步
  • URL编码算法:解决特殊字符在URL中的烦恼
  • react中hook封装一个table组件 与 useColumns组件
  • [nginx文档翻译系列] 控制nginx
  • const let
  • ES6语法详解(一)
  • idea + plantuml 画流程图
  • javascript数组去重/查找/插入/删除
  • jQuery(一)
  • JWT究竟是什么呢?
  • leetcode-27. Remove Element
  • magento2项目上线注意事项
  • node.js
  • Terraform入门 - 3. 变更基础设施
  • 不上全站https的网站你们就等着被恶心死吧
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 多线程 start 和 run 方法到底有什么区别?
  • 构建工具 - 收藏集 - 掘金
  • 关于Java中分层中遇到的一些问题
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 聚类分析——Kmeans
  • 力扣(LeetCode)965
  • 聊聊directory traversal attack
  • 码农张的Bug人生 - 见面之礼
  • 删除表内多余的重复数据
  • 小李飞刀:SQL题目刷起来!
  • 一个SAP顾问在美国的这些年
  • 异步
  • 应用生命周期终极 DevOps 工具包
  • 正则表达式
  • 仓管云——企业云erp功能有哪些?
  • ​马来语翻译中文去哪比较好?
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (Note)C++中的继承方式
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (二)linux使用docker容器运行mysql
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (三)模仿学习-Action数据的模仿
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)C语言家族扩展收藏 (转)C语言家族扩展