Dans cet article, nous allons résoudre un problème intéressant dans le domaine de la manipulation des chaînes : "Réorganiser les chaînes pour maximiser la distance minimale entre n'importe quelle paire de voyelles". Ce problème nous met au défi de manipuler la disposition des caractères dans une chaîne pour garantir la distance minimale la plus grande possible entre deux caractères de voyelle. Nous discuterons de ce problème en détail, fournirons une implémentation du code C++ et illustrerons avec des exemples.
Étant donné une chaîne, la tâche consiste à réorganiser les caractères de la chaîne afin que la distance minimale entre n'importe quelle paire de voyelles soit maximisée. En d’autres termes, nous voulons que les voyelles soient aussi éloignées que possible les unes des autres.
Les voyelles en anglais sont "a", "e", "i", "o", "u" et leurs versions majuscules.
Pour résoudre ce problème, nous adopterons une approche en deux étapes -
Tout d’abord, comptez le nombre de voyelles dans la chaîne et stockez leurs positions dans un tableau.
Ensuite, triez le tableau et calculez la différence maximale entre deux éléments consécutifs. Cette différence représente la distance maximale et minimale entre n'importe quelle paire de voyelles.
Mettons en œuvre cette stratégie en C++ -
#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; }
Max minimum distance between vowels: 3
Ce code trouve d'abord les positions de toutes les voyelles dans la chaîne et les stocke dans un vecteur. Ensuite, il trie ce vecteur et trouve la différence maximale entre les éléments consécutifs. Cette différence représente la distance maximale et minimale entre n'importe quelle paire de voyelles.
Considérons la chaîne « programmation ». Les positions des voyelles « o », « a » et « i » sont respectivement 1, 4 et 7. Par conséquent, la distance maximale et minimale entre n’importe quelle paire de voyelles est de 3.
Cet article propose une approche étape par étape du problème de la maximisation de la distance minimale entre n'importe quelle paire de voyelles dans une chaîne donnée. La solution consiste à compter les voyelles, à stocker leurs positions, puis à trouver la différence maximale entre ces positions. Bien que le problème puisse paraître complexe à première vue, il est grandement simplifié lorsqu’il est décomposé en étapes.
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!