Heim >Backend-Entwicklung >C++ >Überprüft, ob eine Zeichenfolge in zwei Teilzeichenfolgen aufgeteilt werden kann, die jeweils die gleiche Anzahl an Vokalen enthalten

Überprüft, ob eine Zeichenfolge in zwei Teilzeichenfolgen aufgeteilt werden kann, die jeweils die gleiche Anzahl an Vokalen enthalten

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBnach vorne
2023-09-09 13:41:091481Durchsuche

Überprüft, ob eine Zeichenfolge in zwei Teilzeichenfolgen aufgeteilt werden kann, die jeweils die gleiche Anzahl an Vokalen enthalten

Willkommen zu einem weiteren ausführlichen Leitfaden zum faszinierenden Thema Problemlösung in C++. Dieses Mal beschäftigen wir uns mit dem Problem, festzustellen, ob eine Zeichenfolge in zwei Teilzeichenfolgen unterteilt werden kann, die jeweils die gleiche Anzahl an Vokalen enthalten. Diese Aufgabe ist eine ausgezeichnete Übung, um Ihre Fähigkeiten im Umgang mit Saiten und im Vokalzählen zu verbessern.

Problemstellung

Unser Ziel ist es, bei einer gegebenen Zeichenfolge zu bestimmen, ob sie in zwei nicht leere Teilzeichenfolgen unterteilt werden kann, sodass beide Teilzeichenfolgen die gleiche Anzahl an Vokalen haben. Die Vokale im englischen Alphabet sind „a“, „e“, „i“, „o“, „u“, „A“, „E“, „I“, „O“, „U“.

Methode

Unser Ansatz besteht darin, zunächst die Gesamtzahl der Vokale in der Zeichenfolge zu zählen. Wenn die Gesamtzahl nicht gerade ist, wissen wir sofort, dass es unmöglich ist, die Zeichenfolge in zwei Teilzeichenfolgen mit der gleichen Anzahl an Vokalen aufzuteilen.

Wenn die Gesamtzahl gerade ist, iterieren wir über die Zeichenfolge und führen eine fortlaufende Zählung der gefundenen Vokale durch. Wenn unsere laufende Zählung zu irgendeinem Zeitpunkt der Hälfte der Gesamtzählung entspricht, können wir die Zeichenfolge an diesem Punkt in zwei Teilzeichenfolgen mit der gleichen Anzahl an Vokalen aufteilen.

Beispiel

Dies ist der C++-Code, der dieses Problem löst

#include<bits/stdc++.h>
using namespace std;

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

bool canBeSplit(string s) {
   int totalVowels = 0;
   for (char c : s) {
      if (isVowel(c))
         totalVowels++;
   }
   if (totalVowels % 2 != 0)
      return false;
   
   int halfVowels = 0;
   for (char c : s) {
      if (isVowel(c))
         halfVowels++;
      if (halfVowels == totalVowels / 2)
         return true;
   }
   return false;
}

int main() {
   string s="beautiful";
   if (canBeSplit(s))
      cout << "Yes, the string can be split into two substrings with equal number of vowels." << endl;
   else
      cout << "No, the string cannot be split into two substrings with equal number of vowels." << endl;
   return 0;
}

Ausgabe

No, the string cannot be split into two substrings with equal number of vowels.

Testfallbeispiel

Lassen Sie uns dieses Problem und seine Lösung anhand eines Beispiels veranschaulichen -

Gehen Sie davon aus, dass die Saite „schön“ ist.

  • Wir zählen zunächst die Gesamtzahl der Vokale in „schön“, also 5. Da dies keine gerade Zahl ist, wissen wir sofort, dass die Zeichenfolge nicht in zwei Teilzeichenfolgen mit der gleichen Anzahl an Vokalen unterteilt werden kann.

  • Die Ausgabe lautet also: „Nein, die Zeichenfolge kann nicht in zwei Teilzeichenfolgen mit der gleichen Anzahl an Vokalen aufgeteilt werden.“

  • Fazit

Mit dieser C++-Anleitung haben wir gelernt, wie man prüft, ob eine Zeichenfolge in zwei Teilzeichenfolgen unterteilt werden kann, sodass jede Teilzeichenfolge die gleiche Anzahl an Vokalen enthält. Dieses Problem ist eine nützliche Übung zur String-Manipulation und Zeichenzählung in der Sprache C++.

Das obige ist der detaillierte Inhalt vonÜberprüft, ob eine Zeichenfolge in zwei Teilzeichenfolgen aufgeteilt werden kann, die jeweils die gleiche Anzahl an Vokalen enthalten. 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