二进制求和

每日一练社区 2021-08-12 15:22:07

给你两个二进制字符串,返回它们的和(用二进制表示)。

输入为 非空 字符串且只包含数字 1 和 0

 

示例 1:

输入: a = "11", b = "1"
输出:
"100"

示例 2:

输入: a = "1010", b = "1011"
输出:
"10101"

 

提示:

  • 每个字符串仅由字符 '0''1' 组成。
  • 1 <= a.length, b.length <= 10^4
  • 字符串如果不是 "0" ,就都不含前导零。
...全文
1088 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_43487779 2024-04-27
  • 打赏
  • 举报
回复
方法一:先转十进制,得到给果后转二进制,简单直观。
XMeet me 2023-08-04
  • 打赏
  • 举报
回复

class Solution(object):
def bi_add(self, a_list, ll):
i = 0
jinwei = 0
while i < len(a_list) and i < len(ll):
temp = a_list[i] + ll[i] + jinwei
jinwei = temp/2
a_list[i] = temp % 2
i += 1
while i < len(a_list):
temp = jinwei + a_list[i]
jinwei = temp/2
a_list[i] = temp % 2
i += 1
if jinwei:
a_list.append(1)
b = ''.join(str(k) for k in reversed(a_list))
return b
def addBinary(self, a, b):
"""
:type a: str
:type b: str
:rtype: str
"""
a_list = [int(i) for i in reversed(a)]
b_list = [int(i) for i in reversed(b)]
len1 = len(a_list)
len2 = len(b_list)
if len1 >= len2:
c = self.bi_add(a_list, b_list)
else:
c = self.bi_add(b_list, a_list)
return c

qq_43478653 2023-02-10
  • 打赏
  • 举报
回复
非进位加法+异或结果右移1位,直到异或结果为0
二进制原理,进位存位部位
shandianchengzi 2022-01-18
  • 打赏
  • 举报
回复 5
比较所有选项的不同点,发现一般是一个选项不同、其他三个都相同,因此结合常识可以得到正确答案。
「已注销」 2021-12-07
  • 打赏
  • 举报
回复 9
第一步,获取到的两个字符串逆序后,较短的补零。 第二步,逐位做加法运算,设置flag用于判断运算过程中是否进位。对应三种情形:相等且为1,相等且为0,不相等,所以总计六种情形,分别进形判断并更新flag和stringBuffer的值即可。 第三步,逆序输出stringBuffer。
懒羊羊偶吧 2023-08-02
  • 举报
回复
@「已注销」 看你评论懂了
lw13v 2021-11-10
  • 打赏
  • 举报
回复 8
入参反转补位,利用反转后的顺序遍历求和并设置补位标识,求和结果补位处理,再次反转返回答案

11,808

社区成员

发帖
与我相关
我的任务
社区描述
Study well and make progress every day
其他 企业社区
社区管理员
  • 每日一练社区
  • CSDN学习
  • 幻灰龙
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧