您的位置:首页 > 其它

leetcode-67-Add Binary

2015-08-03 18:41 423 查看
Add Binary

Given two binary strings, return their sum (also a binary string).

For example,

a =
"11"


b =
"1"


Return
"100"
.

两字符串表示的2进制数。求它们的和。

直接模拟,从最后一位开始每一位都相加,结果保存在栈中。

class Solution {
public:
string addBinary(string a, string b) {
stack<int>s;
int n = a.size() - 1,m = b.size() - 1;
int add = 0; //进位
while (n >= 0 && m >= 0) {    // 计算每一位的结果,存在栈中
if (a
== '0' && b[m] == '0') {
if (add == 1) s.push('1');
else s.push('0');
add = 0;
}
else if (a
== '0' && b[m] == '1' ||a
== '1' && b[m] == '0') {
if (add == 1) {s.push('0');add = 1;}
else {s.push('1');add = 0;}
}
else {
if (add == 1) s.push('1');
else s.push('0');
add = 1;
}
n--;
m--;
}
// 两字符串有一字符串为空 则另作讨论
if (n < 0 && m < 0) {
if (add == 1) s.push('1');
}
else if (n >= 0 && m < 0) {
while (n >= 0) {
if (a
== '1') {
if (add == 1) {s.push('0');add = 1;}
else {s.push('1');add = 0;}
}
else if (a
== '0') {
if (add == 1 ) s.push('1');
else s.push('0');
add = 0;
}
n--;
}
if (add == 1) s.push('1');
}
else if (n < 0 && m >= 0) {
while (m >= 0) {
if (b[m] == '1') {
if (add == 1) {s.push('0');add = 1;}
else {s.push('1');add = 0;}
}
else if (b[m] == '0') {
if (add == 1 ) s.push('1');
else s.push('0');
add = 0;
}
m--;
}
if (add == 1) s.push('1');
}
string c;
while(!s.empty()) {  // 每一位的结果,从栈中取出,存入string中
c += s.top();
s.pop();
}
return c;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: