Maison > développement back-end > C++ > Programme récursif pour insérer un astérisque entre une paire de caractères identiques en C++

Programme récursif pour insérer un astérisque entre une paire de caractères identiques en C++

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2023-09-04 12:57:13
avant
1479 Les gens l'ont consulté

Programme récursif pour insérer un astérisque entre une paire de caractères identiques en C++

Étant donné une chaîne str1 en entrée. Le but est d'insérer un "*" entre une paire de caractères identiques dans la chaîne d'entrée et de renvoyer la chaîne résultante en utilisant une méthode récursive.

Si la chaîne d'entrée est str1 = "wellness", alors la sortie sera "wel*lnes*s"

Example

Input - str1 = "happiness"

Output - Add * La chaîne résultante : hap*pines*s

Explication - L'ajout de * entre pp et ss obtiendra la chaîne résultante hap*pines*s

Enter - str1 = "swimmmmingggg pooool"

Sortie - La chaîne après avoir ajouté * : swim*m*m*ming*g*g*g po*o*o*ol

Explication - Ajouter * entre mm, gg et oo obtiendra le résultat String swim* m*m*ming*g*g*g po*o*o*ol

La méthode utilisée dans le programme suivant est la suivante

Dans cette méthode, prenez la chaîne str1. À chaque itération, str1 est divisé en deux parties avec l'index actuel comme point médian. Si le dernier caractère de la première sous-chaîne est identique au premier caractère de la sous-chaîne suivante, alors la chaîne d'origine est définie sur la sous-chaîne 1 suivie de "*", suivie de la sous-chaîne 2. Si la longueur de la sous-chaîne 2 est 0, la récursion se termine.

  • Prenez la chaîne d'entrée comme str1 et calculez sa longueur comme len.

  • La fonction addStar(string& s1, int i, int len1) accepte s1, sa longueur et l'index actuel en entrée et ajoute * lorsque les deux paires de caractères sont identiques.

  • Prenez tmp1 comme sous-chaîne de l'index 0 à i.

  • Prenez tmp2 comme sous-chaîne de l'index i à len1+1.

  • Si le dernier caractère de tmp1 est égal au premier caractère de tmp2, définissez s1=tmp1+’*’+tmp2.

  • Appelez addStar(s1, i+1, len1) pour la prochaine itération.

  • Enfin, imprimez str1 dans la fonction principale.

Exemple

#include <iostream>
using namespace std;
void addStar(string& s1, int i, int len1){
   string tmp1=s1.substr(0,i);
   string tmp2=s1.substr(i,len1+1);
   if (tmp2.length() == 0){
      return;
   }
   if (tmp1[i-1] == tmp2[0]){
      s1 = tmp1 + &#39;*&#39; + tmp2;
   }
   addStar(s1, i+1, len1);
}
int main(){
   string str1 = "aabbcccdddd";
   int len=str1.length();
   addStar(str1, 0, len-1);
   cout << "String after adding * : "<<str1 << endl;
   return 0;
}
Copier après la connexion

Output

Si nous exécutons le code ci-dessus, il générera la sortie suivante

String after adding * : a*ab*bc*c*cd*d*d*d
Copier après la connexion

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