Add Binary

来源:互联网 发布:如何注销淘宝账号 编辑:程序博客网 时间:2024/06/08 08:41
题目:

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

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

思路:

这道题目,主要思想就是从两个字符串尾部,逐位相加,并设置标志位,对一些特殊条件一定要注意,本身算法并不难,主要是if-else逻辑判断比较多

代码:

class Solution {public:    string addBinary(string a, string b) {        int temp,len_a,len_b;        len_a = a.size();        len_b = b.size();                string::iterator itr_a = a.end() - 1;        string::iterator itr_b = b.end() - 1;        string str_a =a;        string str_b =b;        if(len_a<len_b)        {            a =str_b;            b =str_a;            itr_a = a.end() - 1;            itr_b = b.end() - 1;        }            int c =0;            while(itr_b!=b.begin()-1)            {                if(c == 0)                {                if(*itr_a ==*itr_b&&*itr_a == '1')                {                                        c=1;                    *itr_a = '0';                    itr_a --;                    itr_b --;                }                else if(*itr_a == *itr_b&&*itr_a =='0')                {                    itr_a --;                    itr_b --;                    c = 0;                }                else                {                    *itr_a = '1';                    c = 0;                    itr_a --;                    itr_b --;                }                    }                else                 {                    if(*itr_a==*itr_b&&*itr_a=='0')                    {                        *itr_a ='1';                        c = 0;                        itr_a --;                    itr_b --;                    }                    else if(*itr_a !=*itr_b)                    {                        c =1;                        *itr_a = '0';                        itr_a --;                    itr_b --;                    }                    else                    {                        c =1;                        *itr_a ='1';                        itr_a --;                    itr_b --;                    }                }                            }        if(c==1)        {            while(itr_a!=a.begin()-1)            {                  cout<<a<<endl;                if(c==1)                {                if(*itr_a=='0')                {                    c =0;                    *itr_a = '1';                    itr_a --;                    return a;                }                else if(*itr_a =='1')                {                    c =1;                    *itr_a = '0';                    itr_a --;                }                              }        }            if(c==1)            {                a.insert(0,"1");                return a;            }        } return a;    }};


原创粉丝点击