Codeforces 665C Smple Strings

xiaoxiao2021-02-28  112

题意:给一个字符串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; }

 

 

 

 

 

转载请注明原文地址: https://www.6miu.com/read-45734.html

最新回复(0)