首頁 > 後端開發 > C++ > 遞歸程式在C++中插入一個星號在一對相同字元之間

遞歸程式在C++中插入一個星號在一對相同字元之間

WBOY
發布: 2023-09-04 12:57:13
轉載
1451 人瀏覽過

遞歸程式在C++中插入一個星號在一對相同字元之間

給定一個字串str1作為輸入。目標是在輸入字串中的一對相同字元之間插入一個“*”,並使用遞歸方法返回結果字串。

如果輸入字串是str1 = "wellness",那麼輸出將會是"wel*lnes*s"

範例

輸入 - str1 = "happiness"

輸出 - 新增*後的字串:hap*pines*s

解釋 - 在pp和ss之間添加*將得到結果字符串hap*pines*s

輸入 - str1 = ”swimmmmingggg 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分為兩部分。如果第一個子字串的最後一個字元與下一個子字串的第一個字元相同,則將原始字串設為子字串1後跟著“*”,再跟著子字串2。如果子字串2的長度為0,則結束遞歸。

  • 將輸入字串作為str1,並計算其長度為len。

  • 函數addStar(string& s1, int i, int len1)接受s1、它的長度和當前索引作為輸入,並在兩對字元相同時加上*。

  • 將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中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板