67. Add Binary
2016-07-02 21:38
274 查看
Given two binary strings, return their sum (also a binary string).
For example,
a =
b =
Return
题意:两个二进制的字符串求和。
思路:逆序,从低位开始加和。进位思路,类似乘法。
class Solution {
public:
string addBinary(string a, string b) {
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
int size = max(a.size(), b.size());
string res(size + 1, '0');
int count = 0;
while (count < size){
int m = 0, n = 0;
if (count < a.size())
m = a[count]-'0';
if (count < b.size())
n = b[count] - '0';
int tmp = m + n;
res[count + 1] = (res[count + 1] - '0') + ((res[count]-'0'+tmp) / 2) + '0';
res[count] = (res[count] + tmp) % 2 +'0';
count++;
}
reverse(res.begin(), res.end());
if (res[0] == '0')
return res.substr(1);
return res;
}
};
For example,
a =
"11"
b =
"1"
Return
"100".
题意:两个二进制的字符串求和。
思路:逆序,从低位开始加和。进位思路,类似乘法。
class Solution {
public:
string addBinary(string a, string b) {
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
int size = max(a.size(), b.size());
string res(size + 1, '0');
int count = 0;
while (count < size){
int m = 0, n = 0;
if (count < a.size())
m = a[count]-'0';
if (count < b.size())
n = b[count] - '0';
int tmp = m + n;
res[count + 1] = (res[count + 1] - '0') + ((res[count]-'0'+tmp) / 2) + '0';
res[count] = (res[count] + tmp) % 2 +'0';
count++;
}
reverse(res.begin(), res.end());
if (res[0] == '0')
return res.substr(1);
return res;
}
};
相关文章推荐
- Java注释模版设置
- 同步、异步、阻塞、非阻塞
- Linux中利用logrotate来对log文件进行转储
- 设计模式_状态模式
- 在资源里面画出你的界面
- (转)常用的算法设计与分析-一夜星辰的博客
- java—程序绑定
- JQuery
- c中函数返回局部变量申请的内存的问题
- 思科路由与交换系列--------NA系列
- 指针赋值的问题
- 全局变量与局部变量
- windows消息发送与接收
- 杨强教授在“2016全球人工技术大会(GAITC)暨人工智能60年纪念活动启动仪式上发表的演讲
- 导航条效果
- android中的style部分属性值介绍
- C语言初探
- 使用Socket、SeverSocket,利用线程实现的简单的一对一聊天
- Centos 6.6 安装拼音输入法
- Flume的Spooling Directory Source支持Sub-directories