Gegeben wurde eine Zeichenfolge str1 als Eingabe. Das Ziel besteht darin, ein „*“ zwischen einem Paar identischer Zeichen in der Eingabezeichenfolge einzufügen und die resultierende Zeichenfolge mithilfe einer rekursiven Methode zurückzugeben.
Wenn die Eingabezeichenfolge str1 = "wellness" lautet, lautet die Ausgabe "well*lnes*s"
Eingabe - str1 = "happiness"
Ausgabe - Add * Die resultierende Zeichenfolge: hap*pines*s
Erklärung – Durch Hinzufügen von * zwischen pp und ss erhält man die resultierende Zeichenfolge hap*pines*s
Enter – str1 = „swimmmmingggg pooool“
Ausgabe – Die Zeichenfolge nach dem Hinzufügen von *: swim*m*m*ming*g*g*g po*o*o*ol
Erklärung – Das Hinzufügen von * zwischen mm, gg und oo ergibt das Ergebnis String swim* m*m*ming*g*g*g po*o*o*ol
Nehmen Sie in dieser Methode die Zeichenfolge str1. In jeder Iteration wird str1 in zwei Teile geteilt, wobei der aktuelle Index den Mittelpunkt bildet. Wenn das letzte Zeichen der ersten Teilzeichenfolge mit dem ersten Zeichen der nächsten Teilzeichenfolge übereinstimmt, wird die ursprüngliche Zeichenfolge auf Teilzeichenfolge 1 gefolgt von „*“ und anschließend Teilzeichenfolge 2 gesetzt. Wenn die Länge von Teilzeichenfolge 2 0 ist, endet die Rekursion.
Nehmen Sie die Eingabezeichenfolge als str1 und berechnen Sie ihre Länge als len.
Die Funktion addStar(string& s1, int i, int len1) akzeptiert s1, seine Länge und den aktuellen Index als Eingabe und fügt * hinzu, wenn beide Zeichenpaare gleich sind.
Nehmen Sie tmp1 als Teilzeichenfolge von Index 0 bis i.
Nehmen Sie tmp2 als Teilzeichenfolge von Index i bis len1+1.
Wenn das letzte Zeichen von tmp1 dem ersten Zeichen von tmp2 entspricht, setzen Sie s1=tmp1+’*’+tmp2.
Rufen Sie addStar(s1, i+1, len1) für die nächste Iteration auf.
Zum Schluss str1 in der Hauptfunktion drucken.
#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 + '*' + 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; }
Wenn wir den obigen Code ausführen, wird die folgende Ausgabe generiert
String after adding * : a*ab*bc*c*cd*d*d*d
Das obige ist der detaillierte Inhalt vonRekursives Programm zum Einfügen eines Sternchens zwischen einem Paar identischer Zeichen in C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!