【题目描述】
给你两个二进制字符串 a
和 b
,以二进制字符串的形式返回它们的和。
【测试用例】
示例1:
输入:a = "11",b = "1"
输出:"100"
示例2:
输入:a = "1010",b = "1011"
输出:"10101"
【思路分析】
最开始我想的是两个字符串从后往前遍历,对应位置相加,模拟正常的二进制加法计算,有进位的将进位1保存在jinWei变量中,无进位的正常相加。但是这样的做法在代码逻辑上有点复杂,因为相加的结果要存入结果字符串res的对应位置,这个索引不好控制(涉及到相加后会比原来的最长字符串的长度多一位的情况)。
所以为了便于理解,最开始就直接将两个字符串逆置,然后从前往后遍历,对应位相加,同时存储到res中的位置也相同,这样就可以用一个遍历i来表示所有的位置,最后再将res逆置回来。
【参考代码】
C实现
#include <stdio.h>
#include <string.h>
#include <stdlib.h