二进制求和-LintCode

来源:互联网 发布:java枚举类型enum 编辑:程序博客网 时间:2024/05/20 12:46

给定两个二进制字符串,返回他们的和(用二进制表示)。

样例:
a = 11
b = 1

返回 100

#ifndef C408_H#define C408_H#include<iostream>#include<string>using namespace std;class Solution {public:    /*    * @param a: a number    * @param b: a number    * @return: the result    */    string addBinary(string &a, string &b) {        // write your code here        int a_size = a.size();        int b_size = b.size();        if (a_size < b_size)        {            int diff = b_size - a_size;            while (diff != 0)            {                a = "0" + a;                diff--;            }        }        else        {            int diff = a_size - b_size;            while (diff != 0)            {                b = "0" + b;                diff--;            }        }        int len = a.size();        int flag = 0;        for (int i = len - 1; i >= 0; --i)        {            if (flag == 0)            {                if (a[i] == '1'&&b[i] == '1')                {                    a[i] = '0';                    flag = 1;                }                else if (a[i] == '0'&&b[i] == '0')                {                    a[i] = '0';                    flag = 0;                }                else                {                    a[i] = '1';                    flag = 0;                }            }            else            {                if (a[i] == '1'&&b[i] == '1')                {                    a[i] = '1';                    flag = 1;                }                else if (a[i] == '0'&&b[i] == '0')                {                    a[i] = '1';                    flag = 0;                }                else                {                    a[i] = '0';                    flag = 1;                }            }            if (i == 0 && flag == 1)                a = "1" + a;        }        return a;    }};#endif
原创粉丝点击