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]


             
相关推荐
FakeOccupational2 小时前
【数学 密码学】量子通信:光的偏振&极化的量子不确定性特性 + 量子密钥分发 BB84算法步骤
算法·密码学
ZhengEnCi4 小时前
S10-蓝桥杯 17822 乐乐的积木塔
算法
贾斯汀玛尔斯4 小时前
每天学一个算法--拓扑排序(Topological Sort)
算法·深度优先
大龄程序员狗哥4 小时前
第25篇:Q-Learning算法解析——强化学习中的经典“价值”学习(原理解析)
人工智能·学习·算法
exp_add35 小时前
质数相关知识
算法
lulu12165440785 小时前
Claude Code项目大了响应慢怎么办?Subagents、Agent Teams、Git Worktree、工作流编排四种方案深度解析
java·人工智能·python·ai编程
小辉同志5 小时前
215. 数组中的第K个最大元素
数据结构·算法·leetcode··快速选择
Ares-Wang5 小时前
Flask》》 Flask-Bcrypt 哈希加密
后端·python·flask
小O的算法实验室6 小时前
2025年IEEE TITS,基于矩阵的进化计算+面向无线传感器网络数据收集无人机路径规划,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
kongba0076 小时前
项目打包 Python Flask 项目发布与打包专家 提示词V1.0
开发语言·python·flask