Add Binary
2015-11-25 22:35
274 查看
题目:Given two binary strings, return their sum (also a binary string).
For example,a =
"11"
b =
"1"
Return
"100".
思路:
本题并不难,难的是如何精简代码,下面的一个方法已经算是很精简的了。与之前的链表加法类似。代码:
class Solution {public:
string addBinary(string a, string b) {
int lenA=a.length(),lenB=b.length();
if(lenA<lenB){
return addBinary(b,a);
}
int pa=lenA-1,pb=lenB-1;
int flag=0;
string res="";
string tem="";
while(pb>=0){
int sum=(int)(a[pa]-'0')+(int)(b[pb]-'0')+flag;
tem+=(sum%2==1)?'1':'0';// sum总和 的三种情况 0,1,2。只有当和为1,返回1,其余都为0
flag=sum/2;
pa--;
pb--;
}
while(pa>=0){
int sum=(int)(a[pa]-'0')+flag;
tem+=(sum%2==1)?'1':'0';// sum总和 的三种情况 0,1,2。只有当和为1,返回1,其余都为0
flag=sum/2;
pa--;
}
if(flag){
tem=tem+'1';
}
reverse(tem.begin(),tem.end());
return tem;
}
};
相关文章推荐
- Tomcat配置远程调试
- java8 Lambda 表达式 学习
- 线程安全的单例模式的实现
- 面试积累
- unix:处理命令行参数
- Android的AlertDialog详解
- 闲来无事,学学C语言
- 在struts2中延长session的生命周期
- 对域约束的认识
- Struts2 在xml文件中敲尖括号”<”没有提示【7】
- 用户管理之修改密码
- Adam:一种随机优化方法
- 判断当前sd卡是否可用
- 大数相乘--极简单的思路
- sift源码+opencv+gtk+VS2013
- java面向对象基础知识(三)
- Mecanim 系统练习2 +物理引擎PhysX
- qt程序打包
- 判断当前网络是否可用
- 忽略大小写,比较字符串大小。