目录
方法 1
算法
示例
输出
首页 后端开发 C++ 通过重复替换第二位,使二进制字符串相等

通过重复替换第二位,使二进制字符串相等

Sep 17, 2023 pm 07:41 PM
替换 重复 二进制串

通过重复替换第二位,使二进制字符串相等

在这个问题中,我们需要将 bin1 字符串转换为 bin2 字符串,方法是将 bin1 字符串的第二个字符替换为第一个和第二个字符中的最小值或最大值,并删除第一个字符。

由于我们需要删除首字符,因此需要确保两个字符串中最后一个 len2 − 1 字符相同。另外,我们需要确保通过对 bin1 字符串的起始字符执行给定的操作,可以获取第二个字符串的第一个字符。

问题陈述 - 我们分别给出了 len1 和 len2 长度的 bin1 和 bin2 二进制字符串。我们需要检查是否可以通过以下操作将 bin1 字符串转换为 bin2 字符串。

  • 使用 bin1 字符串的第一个和第二个字符中的最小值或最大值更新 bin1 字符串的第二个字符。

  • 去掉bin1字符串的第一个字符,每次操作字符串大小都会减少1。

示例

输入

1

bin1 = "0101011"; bin2 = "011";

登录后复制

输出

1

Yes

登录后复制
登录后复制

说明- 我们可以执行以下操作将 bin1 字符串转换为 bin2 字符串。

  • 我们可以用 min(0,1) 替换第二个字符并删除第一个字符。因此,该字符串变为 001011。

  • 我们再次执行相同的操作,字符串变为01011。

  • 在接下来的几次操作中,字符串分别变为 0011 和 011。

输入

1

bin1 = "1110"; bin2 = "1110";

登录后复制

输出

1

Yes

登录后复制
登录后复制

解释 - 给定的字符串已经相同。

输入

1

bin1 = "101101"; bin2 = "1110";

登录后复制

输出

1

 

登录后复制

说明 - 我们无法通过执行给定的操作将 bin1 字符串转换为 bin2 字符串。

方法 1

如果 bin1 字符串的长度较小,我们无法将其转换为 bin2 字符串。

在其他情况下,bin1 字符串的最后一个 len2 − 1 字符保持不变,因为我们不对它执行任何操作。因此,两个字符串中的最后 len2 − 1 个字符应该相同。

另外,如果bin2字符串的第一个字符是‘0’,我们应该对bin1字符串的起始字符进行min()操作,并且它应该至少包含一个‘0’。

如果bin2字符串中的第一个字符是‘1’,我们应该对bin2字符串的起始字符进行max()操作,并且它应该至少包含一个‘1’。

算法

步骤 1 - 如果 bin1 的长度小于 bin2 字符串的长度,则返回 false。

步骤 2 - 从第二个位置开始遍历 bin2 字符串。

步骤 3 - 如果 bin2[p] 不等于 bin1[p + len1 - len2],则返回 false,因为最后 len2 -1 个字符不相同。

步骤4 - 遍历第一个len1 - len2 + 1个字符,检查是否包含bin2[0]字符。如果是,则返回true。

第 5 步 - 在函数末尾返回 false。

示例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

#include <bits/stdc++.h>

using namespace std;

 

bool convertAtoB(string bin1, string bin2) {

    int len1 = bin1.size(), len2 = bin2.size();

    // When length 1 is less than length 2

    if (len1 < len2) {

        return false;

    }

    // Check whether substring bin1[p + len1 - len2]... bin1[len1] and bin2[1]... bin2[len2]

    for (int p = 1; p < len2; p++) {

        if (bin1[p + len1 - len2] != bin2[p]) {

            return false;

        }

    }

    // Check whether substring bin1[0... len1 - len2 - 1] contains bin2[0]

    for (int p = 0; p < len1 - len2 + 1; p++) {

        if (bin1[p] == bin2[0]) {

            return true;

        }

    }

    return false;

}

int main() {

    string bin1 = "0101011";

    string bin2 = "011";

    bool res = convertAtoB(bin1, bin2);

    if (res == true) {

        cout << "YES, It is possible to convert bin1 to bin2.";

    } else {

        cout << "NO, It is not possible to convert bin1 to bin2.";

    }

}

登录后复制

输出

1

YES, It is possible to convert bin1 to bin2.

登录后复制

时间复杂度 - O(N) 来匹配字符串字符。

空间复杂度 - O(1),因为我们不使用任何动态空间。

我们学会了按照给定的操作将第一个二进制字符串转换为第二个二进制字符串。程序员可能会尝试通过用最后一个和最后第二个字符的最小值或最大值替换最后一个字符并删除最后一个字符来检查一个字符串是否可以转换为另一个字符串。

以上是通过重复替换第二位,使二进制字符串相等的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

5分钟掌握PyCharm替换快捷键,轻松提升编程速度! 5分钟掌握PyCharm替换快捷键,轻松提升编程速度! Feb 22, 2024 am 10:57 AM

PyCharm是一款常用的Python集成开发环境,拥有丰富的功能和快捷键,能够帮助开发者提高编程效率。在日常的编程过程中,掌握PyCharm的替换快捷键技巧可以帮助开发者更快捷地完成任务。本文将为大家介绍PyCharm中一些常用的替换快捷键,帮助大家轻松提升编程速度。1.Ctrl+R替换在PyCharm中,可以使用Ctrl+R快捷键来进行替换操

解决Edge浏览器无限循环打开网页的方法 解决Edge浏览器无限循环打开网页的方法 Dec 25, 2023 pm 01:19 PM

在win10上使用edge浏览器的小伙伴们很多都遇到了网页一直不停重复打开的问题很是头疼,那么该怎么解决呢?下面就一起来看看详细的解决方法吧。edge浏览器一直重复打开网页怎么办:1、进入edge浏览器,点击右上角的三个点。2、在任务栏中点击“设置”。3、找到“Microsoftedge打开方式”。4、点击下拉,选择“起始页”。5、完成后重新启动浏览器即可解决问题。

使用jQuery替换元素的class名称 使用jQuery替换元素的class名称 Feb 24, 2024 pm 11:03 PM

jQuery是一种经典的JavaScript库,被广泛应用于网页开发中,它简化了在网页上处理事件、操作DOM元素和执行动画等操作。在使用jQuery时,经常会遇到需要替换元素的class名的情况,本文将介绍一些实用的方法,以及具体的代码示例。1.使用removeClass()和addClass()方法jQuery提供了removeClass()方法用于删除

使用java的StringBuilder.replace()函数替换指定范围的字符 使用java的StringBuilder.replace()函数替换指定范围的字符 Jul 24, 2023 pm 06:12 PM

使用java的StringBuilder.replace()函数替换指定范围的字符在Java中,StringBuilder类提供了replace()方法,可以用来替换字符串中指定范围的字符。该方法的语法如下:publicStringBuilderreplace(intstart,intend,Stringstr)上面的方法用于替换从索引star

PyCharm新手指南:替换功能全面解析 PyCharm新手指南:替换功能全面解析 Feb 25, 2024 am 11:15 AM

PyCharm是一款功能强大的Python集成开发环境,具有丰富的功能和工具,能够极大地提高开发效率。其中,替换功能是开发过程中经常用到的功能之一,能够帮助开发者快速修改代码并提高代码质量。本文将详细介绍PyCharm的替换功能,并结合具体的代码示例,帮助新手更好地掌握和使用该功能。替换功能简介PyCharm的替换功能可以帮助开发者在代码中快速替换指定的文本

PyCharm替换快捷键,让编程更得心应手! PyCharm替换快捷键,让编程更得心应手! Feb 21, 2024 pm 12:03 PM

PyCharm是一款广受程序员欢迎的集成开发环境,它提供了强大的功能和工具,让编程变得更加高效和便捷。而在PyCharm中,合理设置和替换快捷键是提高编程效率的关键之一。本文将介绍如何在PyCharm中替换快捷键,让编程更加得心应手。一、为什么要替换快捷键在PyCharm中,快捷键可以帮助程序员快速完成各种操作,提高编程效率。然而,每个人习惯不同,有些人可能

如何使用Python在Excel中替换一个单词? 如何使用Python在Excel中替换一个单词? Sep 16, 2023 pm 10:21 PM

在Python中,我们可以使用一个名为openpyxl的第三方Python库将Excel中的一个单词替换为另一个单词。MicrosoftExcel是一个用于管理和分析数据的有用工具。使用Python,我们可以自动化一些Excel数据管理任务。在本文中,我们将了解如何使用Python在Excel中替换一个单词。安装openpyxl在Excel中替换Word之前,我们需要使用Python包管理器在系统中安装openpyxl库。要安装openpyxl,请在终端或命令提示符中输入以下命令。Pipinst

MySQL中如何使用REPLACE函数替换字符串中的指定部分 MySQL中如何使用REPLACE函数替换字符串中的指定部分 Jul 25, 2023 pm 01:18 PM

MySQL是一种常用的关系型数据库管理系统,它提供了多种函数来处理和操作数据。其中,REPLACE函数是用来替换字符串中的指定部分内容的。在本文中,将介绍如何在MySQL中使用REPLACE函数进行字符串替换,并通过代码示例来演示其用法。首先,我们来了解一下REPLACE函数的语法:REPLACE(str,search_str,replace_str)其

See all articles