• leetcode笔记:Add Binary


    一.题目描写叙述

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

    For example,
    a = “11”
    b = “1”
    Return ”100”.

    二.解题技巧

    这道题考察两个二进制数相加,考虑到输入的是两组string,同一时候注意在运算时从左到右各自是从低位到高位,因此须要考虑对输入进行翻转处理,中间二进制树相加部分没有过多的设计障碍。主要是计算进位;在两组数据相加完毕后,还须要考虑最高位的进位问题。

    三.演示样例代码

    #include <iostream>
    #include <string>
    using namespace std;
    
    class Solution
    {
    public:
        string AddBinary(string a, string b)
        {
            size_t size = a.size() > b.size() ? a.size() : b.size();
            reverse(a.begin(), a.end());
            reverse(b.begin(), b.end());
            int CarryBit = 0;  // 进位
            string result; // 用于存放结果
    
            for (size_t i = 0; i < size; i++)
            {
                int a_num = a.size() > i ? a[i] - '0' : 0;
                int b_num = b.size() > i ?

    b[i] - '0' : 0; int val = (a_num + b_num + CarryBit) % 2; CarryBit = (a_num + b_num + CarryBit) / 2; // 进位 result.insert(result.begin(), val + '0'); } if (CarryBit == 1) result.insert(result.begin(), '1'); return result; } };

    測试代码:

    #include "AddBinary.h"
    
    using std::cout;
    using std::cin;
    
    int main()
    {
        string a, b;
        cout << "Input the first string: ";
        cin >> a;
        cout << "
    Input the second string: ";
        cin >> b;
    
        Solution s;
        string result = s.AddBinary(a, b);
    
        cout << "
    The Add Binary result is : " << result;
    
        return 0;
    }

    几个測试结果:

    这里写图片描写叙述

    这里写图片描写叙述

  • 相关阅读:
    阅读计划
    个人介绍
    构建之法阅读笔记04
    结对开发——返回一个整数数组中最大子数组的和 (首尾相接版)
    结对开发——返回一个整数数组中最大子数组的和
    学习进度条(三)
    构建之法阅读笔记03
    结对开发——四则运算(三)
    四则运算——单元测试(测试方法:Right-BICEP )
    学习进度条(二)
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7251138.html
Copyright © 2020-2023  润新知