Maison > développement back-end > C++ > le corps du texte

Réorganiser une chaîne pour maximiser la distance minimale entre n'importe quelle paire de voyelles

王林
Libérer: 2023-09-11 19:49:03
avant
1131 Les gens l'ont consulté

Réorganiser une chaîne pour maximiser la distance minimale entre nimporte quelle paire de voyelles

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.

Comprendre l'énoncé du problème

É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.

Méthode

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.

Exemple

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;
}
Copier après la connexion

Sortie

Max minimum distance between vowels: 3
Copier après la connexion

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.

Cas de test

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.

Conclusion

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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal