遞歸程式在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 + '*' + 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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

本文解釋了C標準模板庫(STL),重點關注其核心組件:容器,迭代器,算法和函子。 它詳細介紹了這些如何交互以啟用通用編程,提高代碼效率和可讀性t

本文詳細介紹了c中有效的STL算法用法。 它強調了數據結構選擇(向量與列表),算法複雜性分析(例如,std :: sort vs. std vs. std :: partial_sort),迭代器用法和並行執行。 常見的陷阱

C語言數據結構:樹和圖的數據表示與操作樹是一個層次結構的數據結構由節點組成,每個節點包含一個數據元素和指向其子節點的指針二叉樹是一種特殊類型的樹,其中每個節點最多有兩個子節點數據表示structTreeNode{intdata;structTreeNode*left;structTreeNode*right;};操作創建樹遍歷樹(先序、中序、後序)搜索樹插入節點刪除節點圖是一個集合的數據結構,其中的元素是頂點,它們通過邊連接在一起邊可以是帶權或無權的數據表示鄰

文章討論了在C中有效使用RVALUE參考,以進行移動語義,完美的轉發和資源管理,重點介紹最佳實踐和性能改進。(159個字符)

本文詳細介紹了C中的有效異常處理,涵蓋了嘗試,捕捉和投擲機制。 它強調了諸如RAII之類的最佳實踐,避免了不必要的捕獲塊,並為強大的代碼登錄例外。 該文章還解決了Perf

C 20範圍通過表現力,合成性和效率增強數據操作。它們簡化了複雜的轉換並集成到現有代碼庫中,以提高性能和可維護性。

本文討論了使用C中的移動語義來通過避免不必要的複制來提高性能。它涵蓋了使用std :: Move的實施移動構造函數和任務運算符,並確定了關鍵方案和陷阱以有效

本文討論了C中的動態調度,其性能成本和優化策略。它突出了動態調度會影響性能並將其與靜態調度進行比較的場景,強調性能和之間的權衡
