zoukankan      html  css  js  c++  java
  • LeetCode | 67. 二进制求和

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

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

    示例 1:

    输入: a = "11", b = "1"
    输出: "100"
    

    示例 2:

    输入: a = "1010", b = "1011"
    输出: "10101"
    

    提示:

    • 每个字符串仅由字符 '0' 或 '1' 组成。
    • 1 <= a.length, b.length <= 10^4
    • 字符串如果不是 "0" ,就都不含前导零。
    /*
    思路:对齐、相加、进位
    */
    class Solution {
    public:
        string addBinary(string a, string b) {
            int aLength = a.length();
            int bLength = b.length();
            int maxLength = max(aLength,bLength);
            string s(maxLength,'0');//最大length长度的‘0’组成
            //首先对齐
            if(aLength < bLength) a = string(bLength - aLength , '0') + a;
            else b = string(aLength - bLength , '0') + b;
            //然后从最低下标为1的相加、进位
            for(int i = maxLength - 1;i > 0; i--){
                s[i] +=a[i] - '0' + b[i] - '0';
                if(s[i] >= '2'){//进位
                    s[i-1] += 1;
                    s[i]   -= 2;
                }
            }
            //最高位相加
            s[0] +=a[0] - '0' + b[0] - '0';
            if(s[0] >= '2'){
                s[0] -= 2;
                s = '1' +s;
            }
            return s;
        }
    };
    
  • 相关阅读:
    electron入坑指南
    记CSS格式化上下文
    Ruby安装Scss
    向量
    产生指定范围的随机数
    纯CSS 图片演示
    socket 函数
    C++网络套接字编程TCP和UDP实例
    技巧收藏
    伤心啊
  • 原文地址:https://www.cnblogs.com/RioTian/p/12658921.html
Copyright © 2011-2022 走看看