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]


             
相关推荐
初心未改HD15 小时前
机器学习之K-Means聚类算法详解
算法·机器学习·kmeans
m0_3722570215 小时前
RRF和Cross-Encoder rerank怎么实现
开发语言·windows·python
yugi98783815 小时前
主动噪声控制中的 FXLMS 算法研究与 MATLAB 实现
开发语言·算法·matlab
Liangwei Lin15 小时前
LeetCode 394. 字符串解码
数据结构·算法
Cosolar15 小时前
大模型应用开发面试 • 每日三题|Day 002|记忆(Memory)、工具使用(Tool Use)和微调(Fine-tuning)
后端·python·llm
Carl_奕然16 小时前
【智能体】Agent的四种设计模式之:Plan-and-Execute
人工智能·python·设计模式
纤纡.16 小时前
从课堂视频转写结构化数据:Python + 讯飞 + 通义千问全流程实战
python·阿里云·语言模型·讯飞
YuanDaima204816 小时前
动态规划基础原理与题目说明
数据结构·人工智能·python·算法·动态规划·手撕代码
大志出奇迹16 小时前
传输协议为大端,STM32为小端,数据传输的字节序问题
c语言·stm32·单片机·mcu·算法·rtos
我爱cope16 小时前
【滑动窗口:力扣438找到字符串中所有字母异位词】
算法·leetcode·职场和发展