在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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP