在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
广告