《leetCode》:Add Binary
来源:互联网 发布:大疆地面站软件 编辑:程序博客网 时间:2024/06/05 09:20
题目
Given two binary strings, return their sum (also a binary string).For example,a = "11"b = "1"Return "100".
题目大意:将两个字符串代表的二进制数进行相加运算。
思路
此题也是相当简单的题,直接进行相加就可以了,值得注意的是:两个代表二进制数字的字符相加应该这样:(下面这个错误:自己在做这个题就发生过)
int temp=(ch1-'0')+(ch2-'0');//不要直接写成:int temp=ch1+ch2;char result=temp%2+'0';ci=temp%2;
具体实现代码如下:
char* addBinary(char* a, char* b) { int len1=strlen(a); int len2=strlen(b); //开辟一段空间来保存结果 int len=((len1>=len2)?len1:len2); char *result=(char *)malloc((len+2)*sizeof(char));//多开辟两个,最后一个用来存储'\0',第一个用来保存最高的进位 result[len+1]='\0'; int i=len1-1; int j=len2-1; int ci=0;//表示进位 int index=len; for(;i>=0&&j>=0;i--,j--){ int temp=(a[i]-'0')+(b[j]-'0')+ci; result[index]=temp%2+'0'; index--; ci=temp/2; } //如果长度不一样,则还要考虑剩下的这个字符串与进位ci进行相加运算并保存在结果中 char *remainArr; int k=0; if(i<0){ remainArr=b; k=j; } else if(j<0){ remainArr=a; k=i; } //将剩余的进行相加运算 for(;k>=0;k--){ int temp=(remainArr[k]-'0')+ci; result[index]=temp%2+'0'; index--; ci=temp/2; } if(ci>0){//最高位有进位 result[index]=ci+'0'; return result; } else{ return result+1; }}
0 0
- LeetCode: Add Binary
- [Leetcode] Add Binary
- LeetCode Add Binary
- Leetcode: Add Binary
- [Leetcode] Add Binary
- LeetCode : Add Binary
- LeetCode Add Binary
- [LeetCode] Add Binary
- leetcode 58: Add Binary
- leetcode Add Binary
- [LeetCode] Add Binary
- 【leetcode】Add Binary
- [LeetCode]Add Binary
- [leetcode]Add Binary
- LeetCode-Add Binary
- [leetcode] Add Binary
- LeetCode - Add Binary
- leetcode:Add Binary
- 软件工程第三次作业
- easyui-Messager(消息窗口)源代码
- docker常用命令
- XHTML与CSS一些基本语法与编写习惯
- 关于Eclipse(64位)下aptana插件安装报错问题解决
- 《leetCode》:Add Binary
- webview操作方法
- 关于XCode7objc语法增强
- 已分类图如何获取混淆矩阵以及变化方向检测 confusion matrix change detection
- 不只是给面试加分 -- Java WeakReference的理解与使用
- 1012. 数字分类 (20)
- XML文件读取
- Android TextView跑马灯效果与设置文字阴影
- LayoutSubviews总结