Maison >développement back-end >C++ >Remplacez toutes les consonnes de la chaîne par la voyelle la plus proche à l'aide du programme C++

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

WBOY
WBOYavant
2023-09-11 10:17:02978parcourir

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

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

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;
}

Sortie

“ibgshzjbsh”
“iaeuiuiaui”

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;
}

Sortie

iaeuiuiaui

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer