67.二进制求和

 

class Solution {
public:
	string addBinary(string a, string b) {
		string s = "";
		int an, bn, carry, p, q, sum;
		an = a.size() - 1;
		bn = b.size() - 1;
		stack <int>s1;
		carry = 0;
		while (an >= 0 && bn >= 0)
		{
			p = a[an--] - '0';
			q = b[bn--] - '0';
			sum = p + q+carry;
			if (sum / 2)
				carry = 1;
			else
				carry = 0;
			s1.push(sum % 2);
		}
		while (an >= 0)
		{
			p = a[an--] - '0';
			sum = p + carry;
			if (sum / 2)
				carry = 1;
			else
				carry = 0;
			s1.push(sum % 2);
		}
		while (bn >= 0)
		{
			q = b[bn--] - '0';
			sum = q + carry;
			if (sum / 2)
				carry = 1;
			else
				carry = 0;
			s1.push(sum % 2);
		}
		if (carry)
		{
			s1.push(carry);
		}
		char t;
		while (s1.size())
		{
			t = s1.top() + '0';
			s1.pop();
			s += t;
		}
		return s;

	}
};
发布了114 篇原创文章 · 获赞 1 · 访问量 4653

猜你喜欢

转载自blog.csdn.net/weixin_40823740/article/details/103946468