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

WBOY
リリース: 2023-09-04 12:57:13
転載
1382 人が閲覧しました

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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!