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.
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“.
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.
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; }
No, the string cannot be split into two substrings with equal number of vowels.
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.“
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!