搜尋
首頁後端開發C++透過重複替換第二位,使二進位字串相等

透過重複替換第二位,使二進位字串相等

在這個問題中,我們需要將bin1 字串轉換為bin2 字串,方法是將bin1 字串的第二個字元替換為第一個和第二個字符中的最小值或最大值,並刪除第一個字元。

由於我們需要刪除首字符,因此需要確保兩個字串中最後一個 len2 − 1 字符相同。另外,我們需要確保透過對 bin1 字串的起始字元執行給定的操作,可以取得第二個字串的第一個字元。

問題陳述 - 我們分別給出了 len1 和 len2 長度的 bin1 和 bin2 二進位字串。我們需要檢查是否可以透過以下操作將 bin1 字串轉換為 bin2 字串。

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

  • 去掉bin1字串的第一個字符,每次操作字串大小都會減少1。

範例

輸入

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

輸出

Yes

說明- 我們可以執行以下操作將 bin1 字串轉換為 bin2 字串。

  • 我們可以用 min(0,1) 取代第二個字元並刪除第一個字元。因此,該字串變為 001011。

  • 我們再次執行相同的操作,字串變成01011。

  • 在接下來的幾次操作中,字串分別變成 0011 和 011。

輸入

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

輸出

Yes

解釋 - 給定的字串已經相同。

輸入

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

輸出

No

說明 - 我們無法透過執行給定的操作將 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。

範例

#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.";
    }
}

輸出

YES, It is possible to convert bin1 to bin2.

時間複雜度 - O(N) 來匹配字串字元。

空間複雜度 - O(1),因為我們不使用任何動態空間。

我們學會了按照給定的操作將第一個二進位字串轉換為第二個二進位字串。程式設計師可能會嘗試透過用最後一個和最後第二個字元的最小值或最大值替換最後一個字元並刪除最後一個字元來檢查一個字串是否可以轉換為另一個字串。

以上是透過重複替換第二位,使二進位字串相等的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:tutorialspoint。如有侵權,請聯絡admin@php.cn刪除
使用java的StringBuilder.replace()函数替换指定范围的字符使用java的StringBuilder.replace()函数替换指定范围的字符Jul 24, 2023 pm 06:12 PM

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

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

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

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

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

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中,快捷键可以帮助程序员快速完成各种操作,提高编程效率。然而,每个人习惯不同,有些人可能

揭秘PyCharm中快速替换代码的方法揭秘PyCharm中快速替换代码的方法Feb 25, 2024 pm 11:21 PM

PyCharm是广受开发者喜爱的Python集成开发环境,它提供了许多快速替换代码的方法,让开发过程更加高效。本文将揭秘PyCharm中几种常用的快速替换代码的方法,并提供具体的代码示例,帮助开发者更好地利用这些功能。1.使用替换功能PyCharm提供了强大的替换功能,可以帮助开发者快速替换代码中的文本。通过快捷键Ctrl+R或者在编辑器中右键点击选择Re

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

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

如何使用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

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。