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

王林
王林nach vorne
2023-09-11 19:49:031141Durchsuche

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;
}

Ausgabe

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.

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen