现在的位置: 首页 > 综合 > 正文

Add Binary

2019年07月26日 ⁄ 综合 ⁄ 共 577字 ⁄ 字号 评论关闭

给出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; 
    }
};
【上篇】
【下篇】

抱歉!评论已关闭.