题意:给一个字符串s,要把s变成任意两个相邻的字符都不同的字符串,变化的次数要最小,输出变化后的字符串,若有多种情况随意输出一个即可
解题思路:类似于贪心,如果s[i+1]=s[i],就把s[i+1]变成一个与s[i]、s[i+2]都不同的字符
代码:
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <cmath>
#include <cstdio>
using namespace std;
int main()
{
string s;
while(cin>>s)
{
int len=s.length();
for(int i=0;i<len-1;i++)
{
if(s[i]==s[i+1])
{
s[i+1]='a';
for(int j=0;j<26;j++)
{
if(s[i+1]+j!=s[i]&&s[i+1]+j!=s[i+2])
{
s[i+1]+=j;
break;
}
}
}
}
cout<<s<<endl;
}
return 0;
}