67. Add Binary

来源:互联网 发布:约瑟夫问题 c语言 编辑:程序博客网 时间:2024/06/05 20:25

1.Question

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

For example,
a = "11"
b = "1"
Return "100".

2.Code

class Solution {public:    string addBinary(string a, string b) {        int dist = a.size() - b.size();        if(dist < 0) a.swap(b); //把长的字符串放到a,短的为b        for(int i = 0; i < abs(dist); i++) b.insert(b.begin(), '0'); //为短的字符串b添加相应的0        int carry = 0; //carry表示进位        for(int i = a.size() - 1; i >= 0; i--)  //把b的值,加到a上,然后返回a        {            int current = a[i] - '0' + b[i] - '0';            if(carry) current++;            switch(current)            {                case 1 : a[i] = '1'; carry = 0; break;                case 2 : a[i] = '0'; carry = 1; break;                case 0 :                 case 3 : break;            }        }        if(carry) a.insert(a.begin(), '1');        return a;    }};
3.Note

a. 掌握字符串string 的insert, swap函数。

0 0
原创粉丝点击