源于力扣上面的一道解题的代码,我没有看懂,希望指教,给个详细的代码运行流程,都代表什么意思,谢谢
2条回答 默认 最新
- 广大菜鸟 2021-10-20 14:39关注
第一种最简单的,用int(a,2)的意思是把字符串当二进制,转成10进制,十进制的加了之后结果再转二进制bin(),但要取得二进制结果的字符串的数字部分,因为它是以0b开头的,所以用字符串切片的方式[2:],这个表示截取字符串下标从2开始的部分
第二种,是按位相加,相当于我们小学开始学的数学题,在纸上加那样class Solution(object): def addBinary(self, a, b): """ :type a: str :type b: str :rtype: str """ r, p = '', 0 # r是结果字符串,p是进位的中间变量 d = len(b) - len(a) # 表示2个字符串长度之差,用'0'对较短的补足 【 '0' * d 】,如果d<=0,则返回'' a = '0' * d + a b = '0' * -d + b for i, j in zip(a[::-1], b[::-1]): # 逆序遍历a,b两个字符串的数字 s = int(i) + int(j) + p # 按位之和 r = str(s % 2) + r # 拼接该位的数字和之前的数字,可以看作个位->十位这样的顺序 p = s // 2 # 看有没有进位 return '1' + r if p else r # 如果p还不为0,则还要进位,且为1,否则可以直接返回 s = Solution() print(s.addBinary('1010', '1011'))
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器
- ¥15 电脑桌面设定一个区域禁止鼠标操作