67. 二进制求和
分析
- 字符串逆序遍历
- 为了方便从最低位到最高位逐位相加,首先将
a
和b
字符串进行反转
- 为了方便从最低位到最高位逐位相加,首先将
- 逐位相加
- 维护进位变量
t
,依次对a
和b
的每一位进行相加:- 若当前索引在
a
范围内,则加上a[i] - '0'
- 若当前索引在
b
范围内,则加上b[i] - '0'
- 将当前位结果
t % 2
转为字符加入结果字符串c
- 更新进位
t /= 2
- 若当前索引在
- 维护进位变量
- 处理多余进位
- 当遍历完两个字符串后,若仍有进位,则继续加入结果字符串
- 结果反转
- 将结果字符串
c
反转回正序,即为最终答案
- 将结果字符串
时间复杂度
时间复杂度 O(max(m, n))
,其中 m
和 n
分别为字符串 a
和 b
的长度
空间复杂度
空间复杂度为 O(max(m, n))
C++代码
|
|