67.二进制求和

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

示例 1:

复制代码
输入:a = "11", b = "1"
输出:"100"

示例 2:

复制代码
输入:a = "1010", b = "1011"
输出:"10101"

提示:

  • 1 <= a.length, b.length <= 104
  • ab 仅由字符 '0''1' 组成
  • 字符串如果不是 "0" ,就不含前导零

思路:字符串模拟数学运算,从后往前逐位相加,遇2进1,做好进位的记录即可,个人喜欢在进行运算前先对两个字符串进行处理,给短的字符串添加前导0,让两个字符串的长度相同,这样就可以仅用一个指针来同时遍历两个字符串中相同位的数字,也不需要去判断某个字符串是否还没遍历完,容易遗漏和出错;最后还要注意,两位数和两位数相加可能会得到一个三位数,以此类推,我们需要在最后判断是否还存在一个进位,若存在,需要在最前面添加一个1。

这道题很类似,没有做过可以再做一下这道题,巩固一下

题目:415.字符串相加 . - 力扣(LeetCode)

题解:CSDN

代码(Python):

python 复制代码
class Solution(object):
    def addBinary(self, a, b):
        #给短的那个字符串补上前导0
        len1 = len(a)
        len2 = len(b)
        if len1 > len2:
            for i in range(len1-len2):
                b = '0'+b 
        else:
            for i in range(len2-len1):
                a = '0'+a
        index = len(a) -1          #指向对应运算的数字的下标
        flag = 0                   #表示是否有进位
        result = ''                #保存结果
        while index >= 0:
            num = ord(a[index]) - ord('0') +  ord(b[index]) - ord('0')
            if num + flag >= 2:    #若有进位
                result += str(num + flag - 2)
                flag = 1
            else:                  #若没有进位
                result += str(num + flag)
                flag = 0
            index -= 1
        if flag == 1:             #运算完,还有一个进位
            result += '1'
        return result[::-1]


             
相关推荐
zjy2777710 分钟前
c++如何实现日志文件的异步落盘功能_基于无锁队列方案【附代码】
jvm·数据库·python
Irene199117 分钟前
PyCharm 大数据开发快速上手指南(类比 VSCode 、Oracle SQL Developer)
python
wang3zc21 分钟前
JavaScript中函数声明位置对解析器预编译的影响
jvm·数据库·python
小白学大数据24 分钟前
JS 混淆加密下的 Python 爬虫解决方案
javascript·爬虫·python
炸膛坦客1 小时前
嵌入式 - 数据结构与算法:(1-7)数据结构 - 顺序表和链表的对比
数据结构·链表
yexuhgu1 小时前
C#怎么使用Tuple元组返回多个值_C#如何简化方法返回值【基础】
jvm·数据库·python
lulu12165440781 小时前
JetBrains IDE 终极AI编程方案:CC GUI插件让Claude Code和Codex丝滑运行
java·ide·人工智能·python·ai编程
Jasmine_llq1 小时前
《B3867 [GESP202309 三级] 小杨的储蓄》
算法·循环遍历·数组累加(模拟)·索引定位·顺序输出
啦啦啦_99991 小时前
案例之 逻辑回归_电信用户流失预测
算法·机器学习·逻辑回归
qq_414256571 小时前
JavaScript中类继承中super关键字的调用执行逻辑
jvm·数据库·python