ホームページ  >  記事  >  バックエンド開発  >  C++ の同一文字のペアの間にアスタリスクを挿入する再帰プログラム

C++ の同一文字のペアの間にアスタリスクを挿入する再帰プログラム

WBOY
WBOY転載
2023-09-04 12:57:131408ブラウズ

C++ の同一文字のペアの間にアスタリスクを挿入する再帰プログラム

文字列 str1 を入力として指定します。目的は、入力文字列内の同一文字のペアの間に「*」を挿入し、再帰的メソッドを使用して結果の文字列を返すことです。

入力文字列が str1 = "wellness" の場合、出力は "wel*lnes*s"

Example## となります。

#Input - str1 = "happiness"

Output - * を追加した後の文字列: hap*pines*s

説明 - pp と ss の間に * を追加すると、結果の文字列 hap*pines*s

##Input

- str1 = ”swimmingggg pooool”

出力

- *を追加した後の文字列: swim*m*m*ming*g*g*g po*o*o*ol

説明

- mm、gg、oo の間に * を追加すると、文字列 swim*m*m*ming*g*g*g po*o*o*olで使用されるメソッド次のプログラムは次のとおりです。

このメソッドでは、文字列 str1 を取得します。各反復で、str1 は現在のインデックスを中間点として 2 つの部分に分割されます。最初の部分文字列の最後の文字が次の部分文字列の最初の文字と同じである場合、元の文字列は部分文字列 1 に設定され、その後に「*」、その後に部分文字列 2 が続きます。部分文字列 2 の長さが 0 の場合、再帰は終了します。

    入力文字列を str1 として受け取り、その長さを len として計算します。
  • 関数 addStar(string& s1, int i, int len1) は、s1、その長さ、および現在のインデックスを入力として受け取り、2 つの文字のペアが同じである場合に * を追加します。
  • tmp1 をインデックス 0 から i までの部分文字列として取得します。
  • tmp2 をインデックス i から len1 1 までの部分文字列として取得します。
  • tmp1 の最後の文字が tmp2 の最初の文字と等しい場合、s1=tmp1 '*' tmp2 を設定します。
  • 次の反復では addStar(s1, i 1, len1) を呼び出します。
  • 最後に main 関数で str1 を出力します。
#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;
}

出力

上記のコードを実行すると、次の出力が生成されます

String after adding * : a*ab*bc*c*cd*d*d*d

以上がC++ の同一文字のペアの間にアスタリスクを挿入する再帰プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。