源于力扣上面的一道解题的代码,我没有看懂,希望指教,给个详细的代码运行流程,都代表什么意思,谢谢
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 TLS1.2协议通信解密
- ¥40 图书信息管理系统程序编写
- ¥20 Qcustomplot缩小曲线形状问题
- ¥15 企业资源规划ERP沙盘模拟
- ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在
- ¥15 前端echarts坐标轴问题
- ¥15 ad5933的I2C
- ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
- ¥15 数学建模求思路及代码
- ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题