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

Décoder la chaîne donnée en supprimant les caractères récurrents

PHPz
Libérer: 2023-08-25 21:29:06
avant
1239 Les gens l'ont consulté

Décoder la chaîne donnée en supprimant les caractères récurrents

Le but de cet article est d'implémenter un programme pour décoder une chaîne donnée en supprimant les caractères récurrents.

Comme vous savez ce qu'est une chaîne, une chaîne n'est rien d'autre qu'une collection de caractères. De plus, il n’y a aucune limite au nombre de fois que les caractères peuvent être répétés dans une chaîne. Le même caractère peut apparaître plusieurs fois dans une chaîne. Dans cet article, nous trouverons un moyen de décoder une chaîne codée donnée str en supprimant les occurrences en double.

L'objectif est de décoder la chaîne str fournie, qui a été traitée avec une occurrence de « a », deux occurrences de « b », trois occurrences de « c » et quatre occurrences de « d », jusqu'à 26 occurrences de codage « z ».

Énoncé du problème

Un programme pour décoder une chaîne donnée en supprimant les occurrences en double.

REMARQUE − N'ignorez pas les espaces qui peuvent être inclus dans la lettre.

Exemple Exemple 1

Let us take the input string str = “abbbb accc”
Copier après la connexion
The output obtained is: abb ac
Copier après la connexion
La traduction de

Explication

est :

Explication

Chaque lettre est écrite en fonction du nombre de fois où elle apparaît dans l'alphabet anglais. La chaîne résultante est "abb acc" car la lettre b est répétée quatre fois. La lettre a est répétée deux fois, et enfin la lettre c est répétée trois fois.

Dans ce cas également, les espaces ne sont pas ignorés.

Exemple 2

Let us take the input string str = “ddddadddd”
Copier après la connexion
The output obtained is: dad
Copier après la connexion
La traduction de

Explication

est :

Explication

Chaque lettre est écrite en fonction du nombre de fois où elle apparaît dans l'alphabet anglais. La chaîne résultante est "papa" car la lettre d est répétée huit fois et la lettre a n'apparaît qu'une seule fois.

Dans ce cas, il n'y a pas d'espaces entre les caractères.

Exemple 3

Let us take the input string str = “abbccc”
Copier après la connexion
The output obtained is: abc
Copier après la connexion
La traduction de

Explication

est :

Explication

Chaque lettre est écrite en tenant compte du nombre de fois où elle apparaît dans l'alphabet anglais. La chaîne résultante est "abc" car la lettre a n'apparaît qu'une seule fois. La lettre b est répétée deux fois et enfin la lettre c est répétée trois fois.

Dans ce cas, il n'y a pas d'espaces entre les caractères.

Méthode

Pour décoder une chaîne donnée en supprimant les caractères répétés, nous adoptons la méthode suivante dans cet article.

La méthode pour résoudre ce problème et décoder une chaîne donnée en supprimant les occurrences en double est basée sur l'itération de la chaîne.

C'est-à-dire que le problème ci-dessus peut être résolu en itérant la chaîne str et en poussant chaque caractère dans la chaîne de sortie, puis en avançant de cette position pour trouver le caractère suivant.

Algorithme

Vous trouverez ci-dessous l'algorithme permettant d'imprimer le nombre de caractères camelCase présents dans une chaîne donnée

Afin de résoudre ce problème, veuillez suivre les instructions ci-dessous -

  • Première étape − Démarrer

  • Étape 2 - Définir la chaîne

  • Étape 3 - Créez une variable appelée résultat avec une valeur initiale d'une chaîne vide pour stocker la chaîne de sortie.

  • Étape 4 - Créez la fonction findOccurences(char a1) et effectuez les opérations suivantes -

  • Étape 5 - Si la valeur de a1 est comprise entre a et z, renvoyez la valeur de a1 sous la forme "a". Si la plage de valeurs de a1 n’est pas comprise entre A et Z, alors la valeur de a1 est renvoyée sous la forme « Z ». Sinon, 0 est renvoyé.

  • Étape 6 - Définissez la fonction decodeTheString(string s) pour décoder la chaîne s

  • Étape 7 - Après avoir terminé les étapes ci-dessus, imprimez le résultat de la chaîne comme chaîne finale.

  • Étape 8 − Arrêtez

Exemple : programme C++

Il s'agit d'un programme C++ implémentant l'algorithme écrit ci-dessus pour décoder une chaîne donnée en supprimant les caractères récurrents

// C++ program for our above algorithm
#include <bits/stdc++.h>
using namespace std;

// Function to count the number of  occurences of each character
int findOccurences(char a1){

   // If the character is a lower case , that is [a-z]
   if (a1 <= 'z' && a1 >= 'a') {
      return a1 - 'a';
   }
   
   // If the character is an uppercase, that is [A-Z]
   else if (a1 <= 'Z' && a1 >= 'A') {
      return a1 - 'A';
   }
   
   // If the character is something else  like a punctuation mark then
   return 0;
}

// Function used for decoding the given string str
void decodeTheString(string s){
   string result = "";
   
   // Iterate through the provided string str
   for (int i = 0; i < s.length(); i++) {
      result.push_back(s[i]);
      
      // Find the index i of the next characterto be printed
      i += findOccurences(s[i]);
   }
   cout << "The decoded string: " << result << endl;
}
int main(){
   string s = "aaabbbb";
   cout << "Input string: "<< s << endl;
   decodeTheString(s);
   return 0;
}
Copier après la connexion

Sortie

Input string: aaabbbb
The decoded string: aaabb
Copier après la connexion

Conclusion

De même, nous pouvons décoder n'importe quelle chaîne donnée en supprimant les occurrences en double de celle-ci.

Cet article résout le défi du décodage d'une chaîne donnée en supprimant ses occurrences en double. Voici le code de programmation C++ ainsi que l'algorithme permettant de décoder une chaîne donnée en supprimant les occurrences en double de celle-ci.

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