天津购物网站搭建,网站建设具体项目及价格,做网站的工具有哪些,朝阳网站建设 高碑店67. 二进制求和 - 力扣#xff08;LeetCode#xff09;
又是一道求和题#xff0c;% / 在求和的用途了解了些#xff0c;
目录
题目#xff1a;
思路分析#xff1a;
博主代码:
官方代码#xff1a;
每日表情包#xff1a; 题目#xff1a; 思路分析#xf…67. 二进制求和 - 力扣LeetCode
又是一道求和题% / 在求和的用途了解了些
目录
题目
思路分析
博主代码:
官方代码
每日表情包 题目 思路分析
求和就对齐单个字符式的求和以及转换成整型求和当然转换成整型有溢出的烦恼。
遍历即可不过得注意自己malloc的字符串要记得加上一个字符串的结束标志\0
既然是遍历就是时On又因为是自己malloc返回所以空On
博主代码:
char AddCheck01(char ch1, char ch2, char flag)
{if (((ch1 ch2 flag) - 3 * 0) 2) return 1;else return 0;
}
char* addBinary(char* a, char* b) {//要想相加对齐末位很有必要所以先求长度//官解的reserve是变相的对齐相加int sizeA strlen(a);int sizeB strlen(b);char flag 0;int size (sizeA sizeB ? sizeA : sizeB);char* Return (char*)malloc(sizeof(char) * (size 1));Return[size] \0;//很容易忘记的字符串要带的结束标志for (int i 1; i size; i) {char Acur (sizeA - i) 0 ? a[sizeA - i] : 0;char Bcur (sizeB - i) 0 ? b[sizeB - i] : 0;Return[size - i] Acur ^ Bcur ^ flag;flag AddCheck01(Acur, Bcur, flag);//%/的相加看起来要好多了(之前的十进制链表的题用过)}if (flag 1) {//可能的进一位情况char* tmp (char*)malloc(sizeof(char) * (size 2));memmove((tmp 1), Return, sizeof(char) * (size 1));tmp[0] 1;free(Return);Return tmp;}return Return;
}
官方代码
不喜欢这种malloc方式在不进一位的情况下相当于多开辟了空间
void reserve(char* s) {int len strlen(s);for (int i 0; i len / 2; i) {char t s[i];s[i] s[len - i - 1], s[len - i - 1] t;}
}char* addBinary(char* a, char* b) {reserve(a);reserve(b);int len_a strlen(a), len_b strlen(b);int n fmax(len_a, len_b), carry 0, len 0;char* ans (char*)malloc(sizeof(char) * (n 2));for (int i 0; i n; i) {carry i len_a ? (a[i] 1) : 0;carry i len_b ? (b[i] 1) : 0;ans[len] carry % 2 0;carry / 2;}if (carry) {ans[len] 1;}ans[len] \0;reserve(ans);return ans;
}作者力扣官方题解
链接https://leetcode.cn/problems/add-binary/solutions/299667/er-jin-zhi-qiu-he-by-leetcode-solution/
来源力扣LeetCode
著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。
每日表情包