Add Binary

来源:互联网 发布:金融投资网站 php源码 编辑:程序博客网 时间:2024/06/16 04:16

给出2个二进制字符串,计算它们的和。例如"111"+"1"="1000"

思路:这道题比较简单,只需要将比较短的字符串高位扩充为0,然后模拟十进制相加即可。
class Solution {public:    string addBinary(string a, string b) {        string sum;        int i;        string s1="";        string s2="";        int len1 = a.length(), len2 = b.length();        int len = (len1 >= len2 ? len1 : len2);        if (len1 < len2)        {            string tmp = a;            a = b;            b = tmp;            len1 ^= len2;            len2 ^= len1;            len1 ^= len2;        }            s1 = a;        sum.resize(len);        for(i=0; i<len-len2; i++)        {            s2 += "0";        }         for(i=0; i<len2; i++)        {            s2 += b.substr(i,1);        }          int flag = 0;        for(i=len-1; i>=0; i--)        {            if ((s2[i] - '0' + s1[i] - '0' + flag) % 2 == 0)            {                sum[i] = '0';            }                else             {                sum[i] = '1';            }                flag = (s2[i] - '0' + s1[i] - '0' + flag) / 2;        }         if (flag == 1)        {            a = "1";            a += sum;            return a;        }               return sum;     }};


0 0
原创粉丝点击