Maison > Article > développement back-end > Vérifie si une chaîne peut être divisée en deux sous-chaînes, chacune contenant un nombre égal de voyelles
Bienvenue dans un autre guide approfondi sur le sujet fascinant de la résolution de problèmes en C++. Cette fois, nous aborderons le problème de déterminer si une chaîne peut être divisée en deux sous-chaînes, chacune contenant le même nombre de voyelles. Ce problème est un excellent exercice pour perfectionner vos compétences en manipulation de cordes et en comptage de voyelles.
Étant donné une chaîne, notre objectif est de déterminer si elle peut être divisée en deux sous-chaînes non vides de telle sorte que les deux sous-chaînes aient le même nombre de voyelles. Les voyelles de l'alphabet anglais sont 'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'.
Notre approche consiste à compter d’abord le nombre total de voyelles dans la chaîne. Si le nombre total n’est pas pair, on sait immédiatement qu’il est impossible de diviser la chaîne en deux sous-chaînes avec un nombre égal de voyelles.
Si le nombre total est pair, alors nous parcourons la chaîne et gardons un décompte consécutif des voyelles rencontrées. Si à tout moment notre nombre courant est égal à la moitié du nombre total, nous pouvons diviser la chaîne à ce stade en deux sous-chaînes avec le même nombre de voyelles.
C'est le code C++ qui résout ce problème−
#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.
Illustrons ce problème et sa solution avec un exemple -
Supposons que la chaîne soit « belle ».
On compte d'abord le nombre total de voyelles dans "beau", qui est de 5. Puisqu’il ne s’agit pas d’un nombre pair, on sait immédiatement que la chaîne ne peut pas être divisée en deux sous-chaînes avec un nombre égal de voyelles.
Le résultat sera donc "Non, la chaîne ne peut pas être divisée en deux sous-chaînes avec un nombre égal de voyelles
Avec ce guide C++, nous avons appris à vérifier si une chaîne peut être divisée en deux sous-chaînes de telle sorte que chaque sous-chaîne contienne le même nombre de voyelles. Ce problème est un exercice utile de manipulation de chaînes et de comptage de caractères dans le langage C++.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!