Leetcode-67. 二进制求和
题目:给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 如: 输入:a = “11”, b = “1” 输出:“100”
我们的思路是,首先要返回一个数组,先malloc一个char*数组,长度是要相加的两个数组中最长的那个还要 2,因为考虑到进位问题还有’ ';然后依次从后面遍历,用flag和sum来记录进位的情况; 下面看代码和注释:
代码语言:javascript复制 char* addBinary(char* a, char* b)
{
int la = strlen(a);
int lb = strlen(b);
//为创建一个新的数组做好长度准备
//这个长度要是a和b中最长的 2
//因为考虑到进1问题还有'0','0'占一个,还有一个预留出来预防进一
int max = la > lb ? la 2 : lb 2;
int i = la - 1, j = lb - 1, k = max - 2;
//开辟一个新的char*空间,最后返回去
char* p = (char*)malloc(sizeof(char) * max);
assert(p);
//最高位赋'0'
p[0] = '0';
//最后一位赋'