Heim > Backend-Entwicklung > C++ > Ordnen Sie eine Zeichenfolge neu an, um den Mindestabstand zwischen Vokalpaaren zu maximieren

Ordnen Sie eine Zeichenfolge neu an, um den Mindestabstand zwischen Vokalpaaren zu maximieren

王林
Freigeben: 2023-09-11 19:49:03
nach vorne
1140 Leute haben es durchsucht

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.

Die Problemstellung verstehen

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.

Methode

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.

Beispiel

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;
}
Nach dem Login kopieren

Ausgabe

Max minimum distance between vowels: 3
Nach dem Login kopieren

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.

Testfälle

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.

Fazit

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!

Verwandte Etiketten:
Quelle:tutorialspoint.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage