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

WBOY
Freigeben: 2023-09-09 13:41:09
nach vorne
1435 Leute haben es durchsucht

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

Ausgabe

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

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!

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