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 << "\nInput the second string: ";
    cin >> b;

    Solution s;
    string result = s.AddBinary(a, b);

    cout << "\nThe Add Binary result is : " << result;

    return 0;
}

几个测试结果:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-15 14:56:18

leetcode学习笔记:Add Binary的相关文章

A.Kaw矩阵代数初步学习笔记 3. Binary Matrix Operations

“矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔记下载(Academia.edu) 第3章课程讲义下载(PDF) Summary Addition of matrices Two matrices $[A]$ and $[B]$ can be added only if they are the same size. The addition i

LeetCode(67)题解: Add Binary

https://leetcode.com/problems/add-binary/ 题目: Given two binary strings, return their sum (also a binary string). For example,a = "11"b = "1"Return "100". 思路: 数组模拟加法操做,注意首位进一的情况. class Solution { public: string addBinary(strin

LeetCode OJ:Add Binary(二进制相加)

Given two binary strings, return their sum (also a binary string). For example,a = "11"b = "1"Return "100". 简单的二进制相加而已,只不过传入的参数是字符串而已.为了方便,先将string  reverse了一下,代码如下: 1 class Solution { 2 public: 3 string addBinary(string a, s

【LeetCode】67 - Add Binary

Given two binary strings, return their sum (also a binary string). For example,a = "11"b = "1"Return "100". Solution:二进制加法,和为2进1,和为3进1留1: 1 class Solution { 2 public: 3 string addBinary(string a, string b) { 4 int sizea=a.siz

【LeetCode】67. Add Binary 解题小结

题目: Given two binary strings, return their sum (also a binary string). For example,a = "11"b = "1"Return "100". class Solution { public: string addBinary(string a, string b) { string res(a.size()+b.size(),'0'); int i = a.size

leetcode || 67、Add Binary

problem: Given two binary strings, return their sum (also a binary string). For example, a = "11" b = "1" Return "100". Hide Tags Math String 题意:二进制数相加,二进制数用string表示 thinking: (1)这题简单,但是有一个坑很容易掉进去:二进制的数的低位在最右边,string的下标低位再最左边

leetcode学习笔记--开篇

1 LeetCode是什么? LeetCode是一个在线的编程测试平台,国内也有类似的Online Judge平台.程序开发人员可以通过在线刷题,提高对于算法和数据结构的理解能力,夯实自己的编程基础.对于找工作的小伙伴十分有好处. 这是leetcode官网的简介: LeetCode OJ is a platform for preparing technical coding interviews. Pick from an expanding library of more than 190 

leetcode学习笔记:Merge Sorted Array

一.题目描述 二.解题技巧 这道题不存在复杂的分析过程和边界条件.如果单纯得考虑从小到大地将两个数组进行合并的话,每次在num1中插入一个数的话,需要将后面的元素都向后移动一位,这样,整个处理过程的时间复杂度为O(m*n). 由于两个数组的元素的个数是知道的,同时,合并后的数组也是递增排序的,也就是说,排序之后的数组的最大值是放在最后面的,因此,我们可以从后往前遍历,也就是将最大值放在第一个数组的m+n-1位置,然后将次最大值放在m+n-2位置,依次类推,这样在将元素放置到合适位置的时候,就不需

【leetcode刷题笔记】Add Binary

Given two binary strings, return their sum (also a binary string). For example,a = "11"b = "1"Return "100". 题解:简单的二进制加法模拟.a,b的最后以为对齐开始进行加法,用carries保存进位,如果加完后最高位还有进位,那么要在结果的最前面加一个1. 代码如下: 1 public class Solution { 2 public Str