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

Remplacez toutes les consonnes de la chaîne par la voyelle la plus proche à l'aide du programme C++

WBOY
Libérer: 2023-09-11 10:17:02
avant
970 Les gens l'ont consulté

Remplacez toutes les consonnes de la chaîne par la voyelle la plus proche à laide du programme C++

Cette méthode vise à remplacer une chaîne de consonnes par les voyelles les plus proches de l'alphabet (également appelées lettres latines minuscules). Si deux voyelles sont également proches, nous pouvons les remplacer par la première voyelle de ces lettres.

Regardons quelques scénarios d'entrée -

Supposons que nous ayons une chaîne, telle que "ebgkjasjd", nous devons maintenant remplacer toutes les occurrences de consonnes dans la chaîne par les voyelles les plus proches.

Input = "ebgkjasjd";
Result =
ebgkjasjd
eaeiiauie
Copier après la connexion

Remplacez l'élément 'b' par 'a' puisque c'est la voyelle la plus proche. Nous aurions pu remplacer l'élément « g » par « e » ou « i » puisqu'ils sont tous deux également récents, mais nous choisissons de le remplacer par « e » puisqu'il est arrivé en premier. Il en va de même pour tous les autres éléments de la chaîne.

Supposons que si la chaîne d'entrée ne contient aucune voyelle, par exemple, considérons une chaîne : "sdfhgtykl", la sortie résultante est -

Input = "sdfhgtykl";
Result =
sdfhgtykl
ueeieuuii
Copier après la connexion

Pour le premier élément 's', la voyelle 'u' est la plus proche, remplacez donc 's' par 'u'. Comme tous les autres éléments du tableau, ce sont des consonnes. Cette situation donne également lieu à la complexité la plus défavorable de la méthode.

Algorithme

  • Parcourez la chaîne d'entrée en commençant par l'index de départ.

  • Si une consonne est rencontrée, le nombre de lettres de cette consonne jusqu'aux deux voyelles les plus proches à gauche et à droite sera compté. Choisissez des voyelles avec moins de lettres.

  • Ce processus sera répété jusqu'à ce que toutes les consonnes de la chaîne aient été parcourues.

  • Le résultat obtenu est la chaîne remplacée.

Exemple

Ce qui suit est un code implémenté en C++ pour remplacer toutes les consonnes d'une chaîne par les voyelles les plus proches de l'alphabet -

#include <iostream>
using namespace std;
void solve(string& s) {
   for(char &ch : s) {
      if(ch>'a' && ch<'e') {
         if(ch-'a' <= 'e'-ch) ch='a';
         else ch='e';
      } else if(ch>'e' && ch<'i') {
         if(ch-'e' <= 'i'-ch) ch='e';
         else ch='i';
      } else if(ch>'i' && ch<'o') {
         if(ch-'i' <= 'o'-ch) ch='i';
         else ch='o';
      } else if(ch>'o' && ch<'u') {
         if(ch-'o' <= 'u'-ch) ch='o';
         else ch='u';
      } else if(ch>'u') {
         ch = 'u';
      }
   }
}
int main() {
   string s = "ibgshzjbsh";
   cout << s << "\n";
   solve(s);
   cout << s;
   return 0;
}
Copier après la connexion

Sortie

“ibgshzjbsh”
“iaeuiuiaui”
Copier après la connexion

Exemple

Cependant, une meilleure approche consiste à utiliser un tableau et à stocker la réponse de caractère la plus proche pour chaque caractère au lieu d'utiliser de nombreuses conditions if-else.

#include <iostream>
#include <vector>
using namespace std;
string solve(string s) {
   string hash = "aaaeeeeiiiiioooooouuuuuuuu";
   for (int i=0;i<s.size();i++) {
      s[i] = hash[s[i]-'a'];
   }
   return s;
}
int main() {
   string s = "ibgshzjbsh";
   cout << solve(s);
   return 0;
}
Copier après la connexion

Sortie

iaeuiuiaui
Copier après la connexion

Conclusion

Nous pouvons remplacer un élément en le trouvant et en le remplaçant par le caractère le plus proche. La complexité temporelle du parcours d'une chaîne est O(n). La deuxième méthode est plus facile à comprendre et à coder, et moins lourde. La complexité temporelle est également O(n) puisque nous ne parcourons la chaîne qu'une seule fois.

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