67. Add Binary
2016-07-08 15:47
260 查看
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) {
stack<char> stk;
int lena = a.size()-1;
int lenb = b.size()-1;
int carry = 0;
while (lena >= 0 && lenb >= 0){
int sum = (a[lena] - '0') + (b[lenb] - '0')+carry;
stk.push(sum % 2+'0');
carry = sum / 2;
lena--; lenb--;
}
//注意carry还有可能不为0,继续存在
while (lena >= 0){
int sum = a[lena] - '0' + carry;
stk.push(sum%2+'0');
carry = sum / 2;
lena--;
}
while (lenb >= 0){
int sum = b[lenb] - '0' + carry;
stk.push(sum%2+'0');
carry = sum / 2;
lenb--;
}
if (carry){
stk.push(carry + '0');
}
string res;
while (!stk.empty()){
res.push_back(stk.top());
stk.pop();
}
return res;
}
};
For example,
a =
"11"
b =
"1"
Return
"100".
class Solution {
public:
string addBinary(string a, string b) {
stack<char> stk;
int lena = a.size()-1;
int lenb = b.size()-1;
int carry = 0;
while (lena >= 0 && lenb >= 0){
int sum = (a[lena] - '0') + (b[lenb] - '0')+carry;
stk.push(sum % 2+'0');
carry = sum / 2;
lena--; lenb--;
}
//注意carry还有可能不为0,继续存在
while (lena >= 0){
int sum = a[lena] - '0' + carry;
stk.push(sum%2+'0');
carry = sum / 2;
lena--;
}
while (lenb >= 0){
int sum = b[lenb] - '0' + carry;
stk.push(sum%2+'0');
carry = sum / 2;
lenb--;
}
if (carry){
stk.push(carry + '0');
}
string res;
while (!stk.empty()){
res.push_back(stk.top());
stk.pop();
}
return res;
}
};
相关文章推荐
- Git 问题,一个 master,多个新功能分支,怎样有序地合并和提交
- dwr 后台推送技术
- Linux常用目录含义总结
- 基站与通信
- 跨平台室内三维地图引擎——FengMap公开测试
- 如何查看Linux磁盘空间大小
- 占位12
- PhpStorm创建工程关联本地服务器目录
- 倍增LCA 模板
- 使用MySQL WorkBench导出mysql数据库关系图
- PAT 1025 反转链表
- Swift,语法入门学习
- 模拟简单的时钟
- 工厂模式
- Vysor 插件破解版(beta版本)解决更新正式版本后的收费限制
- c++ 流的注意事项
- 盘块分配--位示图法
- 任务调度中心 (优化版)【原】
- VS插件集
- HDU5438:Ponds(拓扑排序)