[LeetCode]Add Binary

来源:互联网 发布:虚拟7.1软件 编辑:程序博客网 时间:2024/06/05 21:06
解题思路:
1,写一个addOneBinaryChar方法,专门用于做字符的二进制加法,返回结果char以及进位carry。
2,注意,string的insert放在在插入一个char时,语法是这样的 str.insert(0 , 1, ch) // 在第0个位置插入1个ch字符。

3,另外,计算应该从字符串的右边开始,模拟手动做 二进制加法咯 

class Solution {public:    string addBinary(string a, string b) {        string ret;        char carry = '0';        int aInd = a.length()-1;        int bInd = b.length()-1;        while(aInd >= 0 || bInd >= 0){            char tempa='0';            char tempb='0';            if (aInd >= 0){                tempa = a[aInd];            }            if (bInd >= 0){                tempb = b[bInd];            }            char rc = addOneBinaryChar(tempa, tempb, carry);            ret.insert(0, 1, rc);            aInd--;            bInd--;        }        if (carry == '1'){            ret.insert(0, 1, carry);        }        return ret;    }    char addOneBinaryChar(char a, char b, char& carry){        char ret = '0';        switch(charToInt(a) + charToInt(b) + charToInt(carry)){        case 0:            ret = '0';            carry = '0';            break;        case 1:            ret = '1';            carry = '0';            break;        case 2:            ret = '0';            carry = '1';            break;        case 3:            ret = '1';            carry = '1';            break;        default:break;        }        return ret;    }    int charToInt(char a){        return a-'0';    }};


0 0