67. Add Binary

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 flag = ;
int la = a.size() - ;
int lb = b.size() - ;
while(la >= && lb >= )
{
if((int)(a[la]-'') + (int)(b[lb]-'') + flag > )
{
if((int)(a[la]-'') + (int)(b[lb]-'') + flag == )
{
la > lb ? a[la] = '' : b[lb] = '';
}
else
{
la > lb ? a[la] = '' : b[lb] = '';
}
flag = ;
}
else
{
if((int)(a[la]-'') + (int)(b[lb]-'') + flag == )
{
la > lb ? a[la] = '' : b[lb] = '';
}
else
{
la > lb ? a[la] = '' : b[lb] = '';
}
flag = ;
}
la --;
lb --;
}
if(flag == )
{
return la > lb ? a : b;
}
if(a.size() > b.size() && flag == )
{
for(int j = a.size()-b.size()-; j >= ; j--)
{
if((int)(a[j]-'') + flag > )
{
if((int)(a[j]-'') + flag == )
{
a[j] = '';
}
else
{
a[j] = '';
}
flag =;
}
else
{
if((int)(a[j]-'') + flag == )
{
a[j] = '';
}
else
{
a[j] = '';
}
flag = ;
break;
}
}
if(flag == )
{
return "" + a;
}
return a;
}
else
{
for(int j = b.size()-a.size()-; j >= ; j--)
{
if((int)(b[j]-'') + flag > )
{
if((int)(b[j]-'') + flag == )
{
b[j] = '';
}
else
{
b[j] = '';
}
flag =;
}
else
{
if((int)(b[j]-'') + flag == )
{
b[j] = '';
}
else
{
b[j] = '';
}
flag = ;
break;
}
}
if(flag == )
{
return "" + b;
}
return b;
}
}
};

这样写代码太乱,可以先进行对齐操作,将短的字符串通过填充‘0’来使两个字符串长度相同。

最新文章

  1. 谢欣伦 - 原创软件 - 游戏专题 - 我的桌面My Desktop
  2. COGS396. [网络流24题]魔术球问题(简化版
  3. js中,全局变量与直接添加在window属性的区别
  4. Compound Interest Calculator2.0
  5. PHPCMS V9 学习总结(转)
  6. 64位Win7安装+32位Oracle + PL/SQL 解决方法
  7. mongodb进阶一之高级查询
  8. Core Data需求
  9. Unix系统操作指令汇总
  10. [Tyvj模拟赛]运
  11. DevOps: CLM, RLM, RPM, RPD, BSA, BAA, BMA - WOW!
  12. Linux驱动面试题
  13. VueRouter 源码深度解析
  14. 性能测试二:jmeter参数化+聚合报告
  15. github贡献开源项目
  16. Python3基础 list enumerate 将列表的每个元素转换成 带索引值的元组
  17. caffe中全卷积层和全连接层训练参数如何确定
  18. ID3D11DeviceContext::DrawIndexed DrawIndexed 参数详解 StartIndexLocation BaseVertexLocation
  19. 阻止form提交数据,通过ajax等上传数据
  20. android 实现 view 滑动

热门文章

  1. RN项目搭建
  2. MySQL 开启与关闭远程访问&&授权前需执行GRANT USAGE ON *.* TO 'cai'@'%' IDENTIFIED BY 'caigan2015';才能终端访问
  3. Linux Shell入门(转载)
  4. (转)关于rdlc报表的数据源
  5. js中如何操作json数据
  6. Enumerator yielder.yield 与 Proc.yield 区别
  7. Entity Framework6 访问MySQL
  8. (medium)LeetCode 233.Number of Digit One
  9. [HDU 1114] Piggy-Bank (动态规划)
  10. fw:sed的高级用法