2019-08-21 二进制求和

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

输入为非空字符串且只包含数字 1 和 0。

示例 1:

输入:

a = "11"
b = "1"

输出:

"100"

示例 2:

输入:

a = "1010"
b = "1011"

输出:

"10101"
C++
class Solution {
public:
    string addBinary(string a, string b) {
        int lena = a.length();
        int lenb = b.length();
        // cout << lena << ", " << lenb << endl;
        string res;
        int k=0,i=lena-1,j=lenb-1;
        string temp(1,'0');
        while(j>=0 && i>=0){
            // cout << "ss" << a[i]-'0'+b[j]-'0'+k <<endl;
            if(a[i]-'0'+b[j]-'0'+k == 2){
                k = 1;
                res.insert(0, temp);
                // cout << res << endl;
            }else{
                if(a[i]-'0'+b[j]-'0'+k == 3){
                    string s(1,'1');
                    res.insert(0, s);
                    k=1;
                }else{
                    char c = a[i]-'0'+b[j]-'0'+k +'0';
                    string s(1, c);
                    res.insert(0, s);
                    k=0;
                }
            }
            --i;--j;
        }
        int index = i>j?i:j;
        for(int i=index;i>=0;i--){
            if(lena>=lenb){
                if(a[i]-'0'+k == 2){
                    res.insert(0, temp);
                    k=1;
                }else{
                    string s(1, a[i]-'0'+k+'0');
                    res.insert(0, s);
                    k=0;
                }
                
            }else{
                if(b[i]-'0'+k == 2){
                    res.insert(0, temp);
                    k=1;
                }else{
                    string s(1, b[i]-'0'+k+'0');
                    res.insert(0, s);
                    k=0;
                }
            }
        }
        if(k == 1){
            string s(1,'1');
            res.insert(0, s);
        }
        return res;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 10,050评论 0 5
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 9,212评论 0 2
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 13,183评论 0 3
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,906评论 0 4
  • 各位家长,今天就正式开学了,已经全方面给学生讲了纪律和学习的注意事项,并且已经讲了新课,布置了作业,下学期的时间依...
    蕙心读书阅读 1,256评论 0 1

友情链接更多精彩内容