给定一个由 ABC 三种字符构成的字符串,问最少改动多少个位置的字符,使得最终的字符串满足任意两个相邻的字符都不同。
字符串长度 ≤106
输入
一行一个字符串。
输出
一行一个整数表示答案。
输入样例
ABCBA
输出样例
0
模拟,具体见代码
#include<bits/stdc++.h>
using namespace std;
string s;
int main()
{
ios::sync_with_stdio(false);
int sum=0;
cin>>s;
for(int i=0;i<s.length();i++)
{
if(s[i]==s[i+1])
{
if((i+2)<s.length()&&s[i+1]==s[i+2])
i++;
sum++;
}
}
cout<<sum<<endl;
return 0;
}
探讨一种算法,用于计算将包含A、B、C三种字符的字符串转换为任意两个相邻字符均不相同的字符串所需的最少修改次数。通过扫描字符串并计数连续相同字符来实现,适用于长度不超过10^6的字符串。
1414

被折叠的 条评论
为什么被折叠?



