首页 > 其他分享 >leedcode 二进制求和

leedcode 二进制求和

时间:2024-01-24 15:04:28浏览次数:30  
标签:addBinary 二进制 self leedcode len 求和 int str

自己写的

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        a_len=len(a)
        b_len=len(b)
        if a_len<b_len:
            temp=b
            b=a
            a=temp
        a_len = len(a)
        b_len = len(b)

        b_list=list()

        com_len=min(a_len,b_len)
        res_list = [0]*com_len
        res_fro_list=[0]*(a_len-com_len)

        a_fro = a[0:a_len-com_len]
        a_back = a[a_len-com_len:a_len]

        a_fro_list=list()
        a_fro_len = len(a_fro)

        a_back_list=list()
        a_back_len=len(a_back)

        for i in range(a_fro_len):
            a_fro_list.append(int(a_fro[i]))
        for i in range(a_back_len):
            a_back_list.append(int(a_back[i]))
        for i in range(b_len):
            b_list.append(int(b[i]))

        carry=0
        for i in range(com_len-1,-1,-1):
            res_list[i]=a_back_list[i]+b_list[i]+carry
            carry=res_list[i]//2
            res_list[i]=res_list[i]%2
        

        for i in range(a_len-com_len-1,-1,-1):
            res_fro_list[i]=a_fro_list[i]+carry
            carry=res_fro_list[i]//2
            res_fro_list[i]=res_fro_list[i]%2
        

        final_list=res_fro_list+res_list
        

        if carry:
            final_list.insert(0,carry)
        

        final_str=str()
        for i in range(len(final_list)):
            final_str+=str(final_list[i])


        return final_str



a = "1"
b = "111"
sol=Solution().addBinary(a,b)
print(sol)

gpt写的

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        a_len, b_len = len(a), len(b)

        # 使得 a 的长度不小于 b,可以避免后续的交换操作
        if a_len < b_len:
            a, b = b, a
            a_len, b_len = b_len, a_len

        res_list = []
        carry = 0

        # 从右向左遍历两个字符串
        for i in range(1, a_len + 1):
            bit_a = int(a[-i])
            bit_b = int(b[-i]) if i <= b_len else 0

            # 计算当前位的和
            current_sum = bit_a + bit_b + carry

            # 更新进位和当前位的值
            carry = current_sum // 2
            digit = current_sum % 2
            res_list.insert(0, str(digit))

        # 如果最终还有进位,插入到列表的开头
        if carry:
            res_list.insert(0, str(carry))

        return ''.join(res_list)

 

标签:addBinary,二进制,self,leedcode,len,求和,int,str
From: https://www.cnblogs.com/yyyjw/p/17984660

相关文章

  • FastAPI 如何处理请求和响应?
    FastAPI处理请求和响应的流程主要包括以下几个步骤:定义路由:使用FastAPI的FastAPI类创建一个应用实例,然后使用装饰器(如@app.get、@app.post等)定义路由和请求方法。pythonCopycodefromfastapiimportFastAPIapp=FastAPI()@app.get("/items/{item_id}")defread......
  • 计算机常用二进制
    记忆技巧:千三兆六(1k=10^31M=10^6)毫三微六(1mm=10^-31μm=10^-6)二进制:(前缀:0b/0B)(后缀:b/B)八进制:(前缀:0)(后缀:o/O)十进制:(前缀:无,可加+/-)(后缀d/D)十六进制:(前缀:0x/0X)(后缀:h/H)bit:(b)比特/位byte:(B)字节,等于8bit1KB=1024Bytes1MB=1024KB1GB=1024MB1TB=1024G......
  • 二进制部署企业级K8S 1.28.3集群实战
    目录前置知识:部署Kubernetes集群的方式一.K8S二进制部署准备环境1.集群角色划分2.所有节点安装常用的软件包3.k8s-master01节点免密钥登录集群并同步数据4.所有节点Linux基础环境优化5.所有节点升级Linux内核并更新系统6.所有节点安装ipvsadm以实现kube-proxy的负载均衡7.修改en......
  • C#对象二进制序列化优化:位域技术实现极限压缩
    目录1.引言2.优化过程2.1.进程对象定义与初步分析2.2.排除Json序列化2.3.使用BinaryWriter进行二进制序列化2.4.数据类型调整2.5.再次数据类型调整与位域优化3.优化效果与总结1.引言在操作系统中,进程信息对于系统监控和性能分析至关重要。假设我们需要开发一个监控程序......
  • 二进制数表示数据
    计算机信息用二进制数表示:IC有几种不同的形状,有的像一条黑色蜈蚣,在其两侧有数个乃至数百个引脚;有的则像插花用的针盘,引脚在IC内部并排排列着。IC的所有引脚,只有直流电压0V或5V²两个状态。也就是说,IC的一个引脚,只能表示两个状态。IC的这个特性,决定了计算机的信息数据只能用二进......
  • leedcode 找出字符串中第一个匹配项的下标
    自己写的classSolution:defstrStr(self,haystack:str,needle:str)->int:haystack_len=len(haystack)needle_len=len(needle)ifhaystack==needle:return0ifhaystack_len<needle_len:......
  • 从CF1878E学习前缀和维护二进制拆位分析思想
    Problem-1878E-Codeforces这题我想到了个大概,按位与的话结果肯定是递减的,而且要从二进制每一位下手,但是思路只停留在暴力对整个数操作。当然,利用这个性质,肯定要二分。拆位思想比如要计算111000111011100100010我们知道最后结果肯定是留下都有\(1\)的位0100000......
  • leedcode 移除元素
    自己写的:classSolution:#122334defremoveElement(self,nums,val):numms_len=len(nums)ifnumms_len==0:returnnumms_leni=0whilei<numms_len:ifnums[i]==val:......
  • #yyds干货盘点# LeetCode程序员面试金典:二进制手表
    题目二进制手表顶部有4个LED代表小时(0-11),底部的6个LED代表分钟(0-59)。每个LED代表一个0或1,最低位在右侧。例如,下面的二进制手表读取"4:51"。给你一个整数turnedOn,表示当前亮着的LED的数量,返回二进制手表可以表示的所有可能时间。你可以按任意顺序返回答案......
  • 带定位的隔列求和
    问题:按指定月份隔列求和函数公式解决:=SUMIF(OFFSET($C$4,,,,MATCH(AA$2,$C$3:$H$3,)+1),AA$4,$C6)Sumif部分:实现隔列求和,当第4行数据等于AA4时对对应第6行的数据进行求和Offset部分:从C4开始向下不偏移、向右不偏移、新区域高度不变、宽度指定结果Match部分:......