Heim >Backend-Entwicklung >C++ >Ordnen Sie eine Zeichenfolge neu an, um den Mindestabstand zwischen Vokalpaaren zu maximieren
In diesem Artikel werden wir ein interessantes Problem aus dem Bereich der Saitenmanipulation aufdecken: „Saiten neu anordnen, um den Mindestabstand zwischen Vokalpaaren zu maximieren“. Dieses Problem stellt uns vor die Herausforderung, die Anordnung der Zeichen in einer Zeichenfolge zu manipulieren, um den größtmöglichen Mindestabstand zwischen zwei beliebigen Vokalzeichen sicherzustellen. Wir werden dieses Problem im Detail besprechen, die Implementierung von C++-Code bereitstellen und anhand von Beispielen veranschaulichen.
Bei einer vorgegebenen Zeichenfolge besteht die Aufgabe darin, die Zeichen in der Zeichenfolge so neu anzuordnen, dass der Mindestabstand zwischen Vokalpaaren maximiert wird. Mit anderen Worten: Wir möchten, dass die Vokale so weit wie möglich voneinander entfernt sind.
Die Vokale im Englischen sind „a“, „e“, „i“, „o“, „u“ und ihre großgeschriebenen Versionen.
Um dieses Problem zu lösen, werden wir einen zweistufigen Ansatz verfolgen -
Zählen Sie zunächst die Anzahl der Vokale in der Zeichenfolge und speichern Sie ihre Positionen in einem Array.
Als nächstes sortieren Sie das Array und berechnen die maximale Differenz zwischen zwei beliebigen aufeinanderfolgenden Elementen. Dieser Unterschied stellt den maximalen und minimalen Abstand zwischen einem beliebigen Vokalpaar dar.
Lassen Sie uns diese Strategie in C++ implementieren -
#include <bits/stdc++.h> using namespace std; // Function to check if a character is a vowel bool isVowel(char c) { return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U'; } // Function to find maximum minimum distance between vowels int maxMinDist(string s) { vector<int> pos; for (int i = 0; i < s.size(); i++) { if (isVowel(s[i])) pos.push_back(i); } sort(pos.begin(), pos.end()); int maxDist = 0; for (int i = 1; i < pos.size(); i++) { maxDist = max(maxDist, pos[i] - pos[i-1]); } return maxDist; } int main() { string s = "programming"; cout << "Max minimum distance between vowels: " << maxMinDist(s); return 0; }
Max minimum distance between vowels: 3
Dieser Code ermittelt zunächst die Positionen aller Vokale in der Zeichenfolge und speichert sie in einem Vektor. Anschließend wird dieser Vektor sortiert und die maximale Differenz zwischen aufeinanderfolgenden Elementen ermittelt. Dieser Unterschied stellt den maximalen und minimalen Abstand zwischen einem beliebigen Vokalpaar dar.
Betrachten wir die Zeichenfolge „Programmierung“. Die Positionen der Vokale „o“, „a“ und „i“ sind jeweils 1, 4 und 7. Daher beträgt der maximale und minimale Abstand zwischen jedem Vokalpaar 3.
Dieser Artikel bietet eine schrittweise Herangehensweise an das Problem der Maximierung des Mindestabstands zwischen einem beliebigen Vokalpaar in einer bestimmten Zeichenfolge. Die Lösung besteht darin, die Vokale zu zählen, ihre Positionen zu speichern und dann den maximalen Unterschied zwischen diesen Positionen zu ermitteln. Obwohl das Problem auf den ersten Blick komplex erscheinen mag, wird es durch die Unterteilung in diese Schritte erheblich vereinfacht.
Das obige ist der detaillierte Inhalt vonOrdnen Sie eine Zeichenfolge neu an, um den Mindestabstand zwischen Vokalpaaren zu maximieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!