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) {
- //传进来的string有可能为空。
- if (a.empty())
- {
- if(b.empty())return "0";
- if(!b.empty())return b;
- }
- if(!a.empty()&&b.empty())return a;
- //为了计算方便,默认string a为length较大
- if (a.length()<b.length())
- return addBinary(b,a);
- //较小的string b前面都补0
- string m_b(a.length()-b.length(),'0');
- m_b += b;
- //开始计算
- string m_Result;
- int m_jinwei = 0;
- for (int i = a.length()-1 ;i>=0;i--)
- {
- char c = a[i]+m_b[i]+m_jinwei;
- switch(c)
- {
- case 'c':c = '1';m_jinwei = 1;break;
- case 'b':c = '0';m_jinwei = 1;break;
- case 'a':c = '1';m_jinwei = 0;break;
- case 96:c = '0';m_jinwei = 0;break;
- }
- m_Result.insert(0,1,c);
- }
- if(m_jinwei)
- m_Result.insert(0,1,m_jinwei+48);
- return m_Result;
- }
- };