


Wie viele Austausche sind mindestens erforderlich, damit ein gegebener Teilstring genau K 1 enthält?
找到子串恰好包含 K 个 1 所需的最小交换次数是计算机科学和编程领域的一个常见问题。在这篇文章中,我们将深入研究这个问题并为其提供一个 C++ 解决方案。这个问题在各个领域都有应用,包括字符串操作、数据结构优化和面试中的编码挑战。
问题陈述
给定一个二进制字符串和一个数字 K,任务是找到确保该字符串的每个子串恰好都有 K 个 1 所需的最小交换次数。
方法
为了解决这个问题,我们可以使用两指针方法和滑动窗口技术。基本思想是维护一个大小为K的窗口,并计算窗口中全1所需的交换次数。
示例
这是一个实现上述方法的 C++ 函数 -
#include<bits/stdc++.h> using namespace std; int minSwaps(string s, int K) { int n = s.length(); vector<int> onesPrefix(n, 0); if(s[0] == '1') onesPrefix[0] = 1; for(int i = 1; i < n; i++) { onesPrefix[i] = onesPrefix[i-1]; if(s[i] == '1') onesPrefix[i]++; } int ans = INT_MAX; for(int i = 0; i <= n - K; i++) { int j = i + K - 1; int ones = onesPrefix[j] - ((i == 0) ? 0 : onesPrefix[i - 1]); ans = min(ans, K - ones); } return ans; } int main() { string s = "10010110"; int K = 3; cout << "Minimum number of swaps = " << minSwaps(s, K) << endl; return 0; }
输出
Minimum number of swaps = 1
测试用例说明
假设字符串为“10010110”,K = 3。
在初始二进制字符串“10010110”中,我们想让每个大小为3的子字符串恰好有3个1。例如,子字符串“100”需要2次交换才能变成“111”。同样,子串“001”也需要2次交换。通过迭代字符串,我们发现子字符串“101”所需的最小交换次数为 1。
结论
这个问题是一个很好的例子,说明了如何将算法、数据结构和 C++ 语言的理解结合起来解决复杂的问题。理解和实现此类问题对于软件工程师来说非常有益,尤其是在编码面试和竞争性编程中。
Das obige ist der detaillierte Inhalt vonWie viele Austausche sind mindestens erforderlich, damit ein gegebener Teilstring genau K 1 enthält?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



So verwenden Sie die LOCATE-Funktion in MySQL, um die Position eines Teilstrings in einem String zu finden. In MySQL gibt es viele Funktionen, die zum Verarbeiten von Strings verwendet werden können. Unter diesen ist die LOCATE-Funktion eine sehr nützliche Funktion, mit der die Position eines Teilstrings in einem String ermittelt werden kann. Die Syntax der LOCATE-Funktion lautet wie folgt: LOCATE(substring,string,[position]) wobei substring der zu findende Teilstring und string der zu findende Teilstring ist.

Gegeben seien zwei Strings str_1 und str_2. Das Ziel besteht darin, mithilfe eines rekursiven Verfahrens die Anzahl der Vorkommen der Teilzeichenfolge str2 in der Zeichenfolge str1 zu zählen. Eine rekursive Funktion ist eine Funktion, die sich innerhalb ihrer Definition selbst aufruft. Wenn str1 „Iknowthatyouknowthatiknow“ und str2 „know“ ist, beträgt die Anzahl der Vorkommen -3. Lassen Sie uns das anhand von Beispielen verstehen. Geben Sie beispielsweise str1="TPisTPareTPamTP", str2="TP" ein; geben Sie Countofoccurrencesofasubstringrecursi aus

Swap Space spielt in Linux-Systemen eine wichtige Rolle, insbesondere wenn das System nur wenig Arbeitsspeicher hat. Es fungiert als Backup-Speicherplatz, der dazu beiträgt, dass das System auch unter hoher Last reibungslos läuft und die Stabilität aufrechterhält. Dieser Artikel bietet Ihnen eine detaillierte Anleitung zum Hinzufügen von Swap-Speicherplatz unter Ubuntu 22.04LTS, um sicherzustellen, dass die Leistung Ihres Systems optimiert ist und verschiedene Arbeitslasten bewältigen kann. Swap Space verstehen Swap Space stellt virtuellen Speicher bereit, der als Ergänzung zum physischen RAM des Systems verwendet wird. Wenn das System nur noch wenig RAM hat, lagert der Kernel Daten auf die Festplatte aus, um Speichermangel und Systemabstürze zu verhindern. Linux-Systeme verwenden üblicherweise Swap Space, um diese Situation zu bewältigen. Führen Sie mehrere speicherintensive Anwendungen gleichzeitig aus, um sehr große Dateien oder Daten zu verarbeiten

Diese Funktion ähnelt der Funktion strtok(). Der einzige wesentliche Unterschied besteht in _r, einer so genannten reentrant-Funktion. Reentrant-Funktionen sind Funktionen, die während der Ausführung unterbrochen werden können. Diese Art von Funktion kann verwendet werden, um die Ausführung fortzusetzen. Daher sind reentrant-Funktionen Thread-sicher, was bedeutet, dass sie sicher von Threads unterbrochen werden können, ohne Schaden zu verursachen. Die Funktion strtok_r() verfügt über einen zusätzlichen Parameter namens context. Dadurch kann die Funktion an der richtigen Stelle wiederhergestellt werden. Die Syntax der Funktion strtok_r() lautet wie folgt: #include<string.h>char*strtok_r(char*string,constchar*limiter,char**

Eine Matrix ist eine zweidimensionale Anordnung von Zahlen, die in Zeilen und Spalten angeordnet sind. Python verfügt über keinen Datentyp zur Darstellung von Matrizen, wir können jedoch verschachtelte Listen oder NumPy-Arrays als Matrizen verwenden. Sehen Sie sich die folgenden Eingabe- und Ausgabeszenarien an, um zu erfahren, wie Sie die ersten und letzten Spaltenelemente einer Matrix austauschen. Eingabe-Ausgabe-Szenario Angenommen, wir haben eine 3X3-Matrix, die durch eine Liste von Listen dargestellt wird. Die Ausgabematrix ist die resultierende Matrix aus dem Austausch der ersten und letzten Spaltenelemente. Eingabematrix:[1,3,4][4,5,6][7,8,3]Ausgabematrix:[4,3,1][4,5,6][3,8,7]Betrachten wir eine andere Eine Matrix, deren Zeilen und Spalten ungleich sind. Eingabematrix:

In diesem Artikel wird ausführlich erläutert, wie PHP die Zeichenfolge von der Startposition zur Endposition einer Zeichenfolge in einer anderen Zeichenfolge zurückgibt. Der Herausgeber hält dies für recht praktisch, daher teile ich es Ihnen als Referenz mit diesem Artikel können Sie etwas abgewinnen. Verwenden Sie die Funktion substr() in PHP, um Teilzeichenfolgen aus einer Zeichenfolge zu extrahieren. Die Funktion substr() kann Zeichen innerhalb eines angegebenen Bereichs aus einer Zeichenfolge extrahieren. Die Syntax lautet wie folgt: substr(string,start,length) wobei: string: der ursprüngliche String, aus dem der Teilstring extrahiert werden soll. start: Der Index der Startposition des Teilstrings (beginnend bei 0). Länge (optional): Die Länge des Teilstrings. Wenn nicht angegeben, dann

Reguläre Ausdrücke sind ein leistungsstarkes Textverarbeitungstool, mit dem Zeichenfolgen in bestimmten Mustern abgeglichen werden können. In PHP werden reguläre Ausdrücke häufig bei der Zeichenfolgenverarbeitung, Formularvalidierung, Suche und Ersetzung usw. verwendet. In diesem Artikel wird erläutert, wie Sie mithilfe der regulären Ausdrücke von PHP bestimmte Zeichen aus einer Zeichenfolge in die Teilzeichenfolge am Ende extrahieren. Schauen wir uns zunächst ein Beispiel an. Angenommen, wir haben eine Zeichenfolge $str, die mehrere URLs enthält, die mit „http://“ beginnen, und wir möchten diese URLs extrahieren und in einem speichern

In diesem Tutorial müssen wir eine Palindrom-Teilzeichenfolgenabfrage für eine bestimmte Zeichenfolge lösen. Das Lösen von Palindrom-Teilzeichenfolgenabfragen ist viel komplexer als das Lösen regulärer Abfragen in C++. Es erfordert komplexeren Code und komplexere Logik. In diesem Tutorial haben wir String-Str- und Q-Substring-Abfragen [L...R] bereitgestellt, von denen jede zwei Werte L und R hat. Unser Ziel ist es, ein Programm zu schreiben, das eine Abfrage löst, um festzustellen, ob Teilzeichenfolge[L...R] ein Palindrom ist. Wir müssen bestimmen, ob der im Bereich L bis R gebildete Teilstring ein Palindrom ist, um jede Abfrage zu lösen. Geben Sie beispielsweise „abbbabaaaba“ als unsere Eingabezeichenfolge ein
