• leetcode第一刷_Add Binary


    二进制相加,本质上就是大整数加法,有关大整数加法我的舍友教过我一个非常好的方法,先用一个int数组保存结果,将两个数相应位置相加,所有加完后。再统一处理进位的问题。这种方法相同适用于大整数的乘法。

    这个题没什么特别的,注意一下进位别搞错了即可了,还有事实上不用像我写的这么麻烦,能够一開始先推断哪个更长一些。交换一下。代码会简洁非常多。

    class Solution {
    public:
        string addBinary(string a, string b) {
            int l1 = a.length(), l2 = b.length();
            string c(max(l1, l2)+1, '0');
            int i1 = l1-1, i2 = l2-1, ch=0, k = max(l1, l2);
            while(i1>=0&&i2>=0){
                if(a[i1] == '1' && b[i2] == '1'){
                    c[k--] = ch+'0';
                    ch = 1;
                }else if(a[i1]=='1'||b[i2]=='1'){
                    if(ch){
                        c[k--] = '0';
                    }else{
                        c[k--] = '1';
                    }
                }else{
                    c[k--] = '0'+ch;
                    ch = 0;
                }
                i1--; i2--;
            }
            while(i1>=0){
                if(ch){
                    if(a[i1] == '1'){
                        c[k--] = '0';
                        ch = 1;
                    }else{
                        c[k--] = '1';
                        ch = 0;
                    }
                }else{
                    c[k--] = a[i1];
                }
                i1--;
            }
            while(i2>=0){
                if(ch){
                    if(b[i2] == '1'){
                        c[k--] = '0';
                        ch = 1;
                    }else{
                        c[k--] = '1';
                        ch = 0;
                    }
                }else{
                    c[k--] = b[i2];
                }
                i2--;
            }
            if(ch)
                c[0] = '1';
            if(c[0] == '0')
                c = c.substr(1, c.length()-1);
            return c;
        }
    };

  • 相关阅读:
    【刷题】Linux修改权限命令
    【刷题】Linux进程通信方式
    【刷题】网络:TCP与UDP
    【刷题】SQL基本操作
    【刷题】数据库三大范式
    【刷题】java会不会内存泄漏
    【刷题】Java-重写和重载
    【刷题】Java面向对象概述
    【刷题】Java垃圾回收常见问题
    测试常见问题合集
  • 原文地址:https://www.cnblogs.com/jhcelue/p/6941746.html
Copyright © 2020-2023  润新知