Maison  >  Article  >  développement back-end  >  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++

WBOY
WBOYavant
2023-09-04 12:57:131346parcourir

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

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

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