在C++中列印最接近的字串,該字串不包含相鄰的重複字元
在這個問題中,我們得到一個字串。我們的任務是列印一個最接近當前字串的字串,並且該字串不包含任何相鄰的重複字元。
讓我們舉個例子來理解這個問題
Input: string = “good” Output: goad
在這個例子中,我們發現索引1和2處的元素相同,所以我們更改索引2處的元素。
為了解決這個問題,我們將遍歷字串並檢查是否有任何兩個相鄰元素相同。如果是,則更改第二個元素(如果第i個和第i+1個元素相同,則更改第i+1個元素)。解決這個問題將使用貪心演算法,對於每對相鄰的相似元素,我們將進行一次更改。我們必須記住的一件事是在更改時檢查所有附近的元素,即如果我們正在更改第i個元素,則更改後第i+1個和第i個元素應該不同。
示例
程式展示了我們解決方案的實現:
#include <iostream> #include <string.h> using namespace std; void printStringWithNoDuplicates(string str){ int len = str.length(); for (int i = 1; i < len; i++){ if (str[i] == str[i - 1]){ str[i] = 'a'; while (str[i] == str[i - 1] || (i + 1 < len && str[i] == str[i + 1])) str[i]++; i++; } } cout<<str; } int main(){ string str = "good"; cout<<"The orignal string is : "<<str<<endl; cout<<"String without adjecent duplicate characters is : "; printStringWithNoDuplicates(str); return 0; }
輸出
The orignal string is : good String without adjecent duplicate characters is : goad
廣告