Inhaltsverzeichnis
Syntax
Algorithm
方法一:遍历方法
Example
示例
输出
Explanation
方法二:滑动窗口
结论
Heim Backend-Entwicklung C++ Maximieren Sie die Anzahl der Minderheitszeichen, die aus einer bestimmten Binärzeichenfolge-Teilzeichenfolge entfernt werden können, implementiert in C++

Maximieren Sie die Anzahl der Minderheitszeichen, die aus einer bestimmten Binärzeichenfolge-Teilzeichenfolge entfernt werden können, implementiert in C++

Aug 31, 2023 am 09:33 AM
二进制字符串 c实现 最大化删除数量

Maximieren Sie die Anzahl der Minderheitszeichen, die aus einer bestimmten Binärzeichenfolge-Teilzeichenfolge entfernt werden können, implementiert in C++

Our current undertaking involves maximizing the number by which we can delete any occurrences containing the minority character(s) within a section comprised entirely by either '0' or '1'. The end goal is simply to reach maximum possible deletions while still respecting all given rules and constraints.

Syntax

To ensure a comprehensive understanding of the upcoming codes let us first familiarize ourselves with the syntax of the method that will be employed before exploring the algorithm and strategies −

int maximizeDeletions(string binaryString, int startIndex, int endIndex)
Nach dem Login kopieren

Algorithm

最大化给定二进制字符串子串中少数字符删除的算法可以通过以下步骤描述:

  • 首先,让我们通过将一个名为 deletions 的变量初始化为零来开始。这个变量的主要目的是监控发生的删除操作的计数。

  • 确定二进制字符串的特定子字符串中数字'0'和'1'出现的频率。可以分别计算这些数字的每次出现。

  • To pinpoint the minority character(s), we must refer to the counts obtained in the previous step.

  • 从子字符串中删除所有次数较少的字符,并相应地更新删除计数。

  • 将删除的最终值作为结果返回

方法一:遍历方法

The execution of our approach involves traversing through the binary strings substring in a linear fashion and then deleting the minority character(s) all at once.

Example

的中文翻译为:

示例

#include <iostream>
#include <algorithm>
using namespace std;

int maximizeDeletionsLinear(string binaryString, int startIndex, int endIndex) {
   int countZero = 0;
   int countOne = 0;

   for (int i = startIndex; i <= endIndex; i++) {
      if (binaryString[i] == '0') {
         countZero++;
      } else {
         countOne++;
      }
   }

   int deletions = endIndex - startIndex + 1 - min(countZero, countOne);
   return deletions;
}

int main() {
   string binaryString;
   int startIndex, endIndex;

   cout << "Enter the binary string: ";
   cin >> binaryString;
   cout << "Enter the start index: ";
   cin >> startIndex;
   cout << "Enter the end index: ";
   cin >> endIndex;

   int deletions = maximizeDeletionsLinear(binaryString, startIndex, endIndex);
   cout << "Maximum deletions: " << deletions << endl;
   
   return 0;
}
Nach dem Login kopieren

输出

Enter the binary string: 1011010011
Enter the start index: 2
Enter the end index: 8
Maximum deletions: 2
Nach dem Login kopieren

Explanation

在方法1中,我们利用线性遍历来最大化从给定二进制字符串子串中删除少数字符的数量。通过遍历指定的子串,我们可以确定在该部分内每个实例的'0'和'1'出现的次数。在确定该区域或组内较少频繁出现的字符(即找到"少数派")之后,我们可以通过从该指定区域内所有字符的计数中减去它们各自的计数来计算可能的删除次数。

这导致了一种有效的方法,可以揭示简单但实用的解决方案 - 只需要对我们的初始字符串进行一次遍历 - 这使得这种方法特别适用于较短的输入字符串。

方法二:滑动窗口

The sliding window technique is another efficient approach to solve this problem. It involves using a window of fixed size to traverse the substring of the binary string

Example

的中文翻译为:

示例

#include <iostream>
#include <algorithm>
using namespace std;

int maximizeDeletionsSlidingWindow(string binaryString, int startIndex, int endIndex) {
   int left = startIndex;
   int right = startIndex;
   int countZero = 0;
   int countOne = 0;
   int deletions = 0;

   while (right <= endIndex) {
      if (binaryString[right] == '0') {
         countZero++;
      } else {
         countOne++;
      }

      while (min(countZero, countOne) > 0) {
         if (binaryString[left] == '0') {
            countZero--;
         } else {
            countOne--;
         }
         left++;
      }

      deletions = max(deletions, right - left + 1);
      right++;
   }

   return deletions;
}

int main() {
   string binaryString;
   int startIndex, endIndex;

   cout << "Enter the binary string: ";
   cin >> binaryString;
   cout << "Enter the start index: ";
   cin >> startIndex;
   cout << "Enter the end index: ";
   cin >> endIndex;

   int deletions = maximizeDeletionsSlidingWindow(binaryString, startIndex, endIndex);
   cout << "Maximum deletions: " << deletions << endl;

   return 0;
}
Nach dem Login kopieren

输出

Enter the binary string: Enter the start index: Enter the end index: Maximum deletions: 0
Nach dem Login kopieren

Explanation

方法2涉及利用滑动窗口技术来最大化删除少数字符。使用固定大小的窗口,我们遍历子字符串,随着窗口的移动更新'0'和'1'的计数。通过根据计数调整窗口边界,我们识别出少数字符并计算可能的最大删除次数。这种方法通过高效地滑动窗口减少了冗余计算的数量,使其更适用于较大的输入,并提供更快的解决方案。

结论

在本文中,我们探讨了如何从给定的二进制字符串子串中最大化删除少数字符的问题。我们讨论了两种方法 - 线性遍历和滑动窗口技术。这两种方法都提供了高效的解决方案来实现所需的结果。通过理解算法并研究提供的可执行代码示例,您可以将这些概念应用于解决自己项目中的类似问题。请记住要分析问题,选择最合适的方法,并相应地实施。

Das obige ist der detaillierte Inhalt vonMaximieren Sie die Anzahl der Minderheitszeichen, die aus einer bestimmten Binärzeichenfolge-Teilzeichenfolge entfernt werden können, implementiert in C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Längste nicht ansteigende Teilsequenz in einer Binärzeichenfolge Längste nicht ansteigende Teilsequenz in einer Binärzeichenfolge Sep 07, 2023 pm 11:13 PM

Bei diesem Problem müssen wir die längste nicht zunehmende Teilfolge einer gegebenen Zeichenfolge finden. Nicht aufsteigend bedeutet, dass die Zeichen entweder gleich oder in absteigender Reihenfolge sind. Da Binärzeichenfolgen nur „0“ und „1“ enthalten, sollte die resultierende Zeichenfolge entweder mit „1“ beginnen und mit „0“ enden oder mit „0“ oder „1“ beginnen und enden. Um dieses Problem zu lösen, zählen wir das Präfix „1“ und das Suffix „0“ an jeder Position der Zeichenfolge und ermitteln die maximale Summe aus Präfix „1“ und Suffix „0“. Problemstellung: Wir erhalten eine binäre Zeichenfolge str. Wir müssen die längste nicht zunehmende Teilsequenz aus der gegebenen Zeichenfolge finden. Beispiel Input–str="010100"Output–4 veranschaulicht die längste nicht-rekursive Methode

In PHP besteht die Funktion der Funktion pack() darin, Daten in eine Binärzeichenfolge umzuwandeln In PHP besteht die Funktion der Funktion pack() darin, Daten in eine Binärzeichenfolge umzuwandeln Aug 31, 2023 pm 02:05 PM

Die Funktion pack() packt Daten in eine Binärzeichenfolge. Syntax pack(format,args) Parameter format – das zu verwendende Format. Die folgenden Werte sind möglich: a – mit NUL aufgefüllte Zeichenfolge A – mit Leerzeichen aufgefüllte Zeichenfolge h – hexadezimale Zeichenfolge, niedriges Nibble zuerst H – hexadezimale Zeichenfolge, hohes Nibble zuerst c – vorzeichenbehaftetes Zeichen C – vorzeichenloses Zeichen s – vorzeichenbehaftetes Kurzzeichen (immer 16 Bit). , Maschinenbyte-Reihenfolge) S – unsigned short (immer 16 Bit, Maschinenbyte-Reihenfolge) n – unsigned short (immer 16 Bit, Big-Endian-Bytereihenfolge) v – unsigned short (immer 16 Bit, Little-Endian-Bytereihenfolge) i – vorzeichenbehaftete Ganzzahl (hängt von der Maschinengröße und der Byte-Reihenfolge ab) I – Keine vorzeichenbehaftete Ganzzahl (abhängig von

Ermitteln Sie in C++ die Anzahl der eindeutigen Permutationen einer Binärzeichenfolge, die mit 1 beginnt Ermitteln Sie in C++ die Anzahl der eindeutigen Permutationen einer Binärzeichenfolge, die mit 1 beginnt Sep 05, 2023 am 09:01 AM

In der gegebenen Aufgabe erhalten wir eine Zeichenfolge bestehend aus 0 und 1; wir müssen die Gesamtzahl aller Permutationen ermitteln, die mit 1 beginnen. Da die Antwort eine große Zahl sein kann, nehmen wir sie modulo 1000000007 und geben sie aus. Input:str="10101001001"Output:210Input:str="101110011"Output:56 Wir werden dieses Problem lösen, indem wir kombinatorische Mathematik anwenden und einige Formeln aufstellen. Lösungsmethode Bei dieser Methode zählen wir die Anzahl der Nullen und Einsen. Angenommen, n ist die Anzahl der Einsen, die in unserer Zeichenfolge erscheinen, und m ist die Anzahl der Nullen, die in unserer Zeichenfolge erscheinen

C++-Implementierung des Algorithmus zur Erzeugung von Mittelpunktlinien C++-Implementierung des Algorithmus zur Erzeugung von Mittelpunktlinien Sep 09, 2023 pm 07:49 PM

Eine Linie verbindet zwei Punkte. Es ist ein Grundelement in der Grafik. Um eine Linie zu zeichnen, benötigen Sie zwei Punkte und zeichnen eine Linie zwischen diesen beiden Punkten auf dem Bildschirm. In Bezug auf die Grafik nennen wir diese Punkte Pixel und jedem Pixel ist eine ganzzahlige Koordinate zugeordnet. Wir geben ganzzahlige Koordinaten in der Form (x1,y1) und (x2,y2) an, wobei x1

Producer-Consumer-Problem und seine Implementierung in C++ Producer-Consumer-Problem und seine Implementierung in C++ Sep 17, 2023 pm 11:09 PM

Eine vorherrschende Synchronisationsherausforderung beim Concurrent Computing ist das sogenannte Producer-Consumer-Problem. Da mehrere Threads oder Prozesse darauf ausgelegt sind, ihre Vorgänge beim Zugriff auf eine gemeinsam genutzte Quelle zu koordinieren, erfordert dieses Problem komplexe Kommunikationsaufgaben sowie eine ausgewogene Ausführung. Die heutige Diskussion wird dazu beitragen, die Konzepte hinter dieser Schwierigkeit zu verstehen und gleichzeitig ihre Bedeutung in zeitgenössischen Informatik-Frameworks anzuerkennen – insbesondere in der C++-Implementierungspraxis. Definition und Zweck des Produzenten-Konsumenten-Problems verstehen Lösungen für die Herausforderungen des Produzenten-Konsumenten-Problems ergeben sich aus einer klaren Abgrenzung der Verantwortlichkeiten zwischen denjenigen, die für die Produktion und Nutzung von Informationen verantwortlich sind. Wenn Produzenten selbst neue Datensätze generieren, stellen Konsumenten sicher, dass diese korrekt verwendet werden, indem sie ihre Abläufe synchronisieren. Man muss darauf achten, Probleme wie Race Conditions oder Deadlocks zu vermeiden, z.B.

Prüft, ob eine Zeichenfolge durch Vertauschen von Zeichenpaaren an Indizes mit ungleichen Zeichen in einer Binärzeichenfolge eine Palindromzeichenfolge bilden kann Prüft, ob eine Zeichenfolge durch Vertauschen von Zeichenpaaren an Indizes mit ungleichen Zeichen in einer Binärzeichenfolge eine Palindromzeichenfolge bilden kann Sep 02, 2023 pm 08:09 PM

Problemstellung: Wir haben einen String str und einen binären String B. Die Länge beider Saiten ist gleich N. Wir müssen prüfen, ob wir String str zu einem Palindrom-String machen können, indem wir seine Zeichen mehrmals auf jedem Indexpaar austauschen, das ungleiche Zeichen in String B enthält. Beispiel Beispiel Eingabe str='AAS' B='101' Ausgabe 'JA' Die chinesische Übersetzung von Erläuterung lautet: Erläuterung Wir können str[1] und str[2] austauschen, da B[1] und B[2] nicht gleich sind . Die letzte Zeichenfolge kann „ASA“ sein. Eingabe str='AASS' B='1111' und Ausgabe 'Nein'. Die chinesische Übersetzung von Erklärung lautet: Erklärung, dass wir den String nicht palindromieren können,

Finden Sie den Player mit der geringsten Anzahl an Nullen, nachdem Sie eine Binärzeichenfolge geleert haben (durch Entfernen nicht leerer Teilzeichenfolgen). Finden Sie den Player mit der geringsten Anzahl an Nullen, nachdem Sie eine Binärzeichenfolge geleert haben (durch Entfernen nicht leerer Teilzeichenfolgen). Sep 16, 2023 am 10:21 AM

In diesem Artikel werden wir ein interessantes Problem im Zusammenhang mit dem Bereich der String-Manipulation und der Spieltheorie diskutieren: „Leeren Sie einen binären String, indem Sie nicht leere Teilstrings entfernen, und finden Sie den Spieler mit den wenigsten verbleibenden Nullen.“ Diese Frage untersucht das Konzept der Verwendung binärer Zeichenfolgen für Wettkampfspiele. Unser Ziel ist es, den Spieler zu finden, der am Ende des Spiels die wenigsten 0 übrig hat. Wir werden dieses Problem diskutieren, eine C++-Codeimplementierung bereitstellen und das Konzept anhand eines Beispiels erläutern. Die Problemstellung verstehen Zwei Spieler erhalten eine Binärzeichenfolge und spielen abwechselnd das Spiel. In jedem Zug entfernt der Spieler nicht leere Teilzeichenfolgen, die mindestens eine „1“ enthalten. Das Spiel endet, wenn die Zeichenfolge leer ist oder keine „1“ in der Zeichenfolge vorhanden ist. Spieler, die nicht in der Lage sind, Maßnahmen zu ergreifen, verlieren das Spiel. Die Aufgabe besteht darin, die endgültige 0 zu finden

Berechnen Sie binäre Zeichenfolgen der Länge N, die wiederholte Verkettungen von Teilzeichenfolgen sind Berechnen Sie binäre Zeichenfolgen der Länge N, die wiederholte Verkettungen von Teilzeichenfolgen sind Sep 07, 2023 am 10:13 AM

Der Zweck dieses Artikels besteht darin, ein Programm zum Zählen der Anzahl binärer Zeichenfolgen der Länge N zu implementieren, die durch wiederholte Verkettung einer Teilzeichenfolge gebildet werden. Das Ziel besteht darin, zu bestimmen, wie viele Binärzeichenfolgen der Länge N durch wiederholtes Verketten einzelner Teilzeichenfolgen des gegebenen Textes erstellt werden können, wobei N eine positive ganze Zahl ist. Problemstellung: Implementieren Sie ein Programm, das die Anzahl der binären Zeichenfolgen der Länge N zählt, die wiederholt Teilzeichenfolgen verketten. Beispiel Beispiel 1 Nehmen wir die Eingabe, N = 3. Ausgabe: 2. Die chinesische Übersetzung von Explanation lautet: Explanation. Im Folgenden werden mögliche binäre Zeichenfolgen der Länge N = 3 aufgeführt, in denen eine Teilzeichenfolge wiederholt verkettet wird. „000“:Thesubstr

See all articles