hihocoder-1850-字母去重
#1850 : 字母去重
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
给定一个字符串S,每次操作你可以将其中任意一个字符修改成其他任意字符。
请你计算最少需要多少次操作,才能使得S中不存在两个相邻的相同字符。
输入
只包含小写字母的字符串S。
1 ≤ |S| ≤ 100000
输出
一个整数代表答案
- 样例输入
-
aab
- 样例输出
-
1
题解:
一道很简单的题目,只需要对数组进行扫一遍,判断每段重复的数组长度就可以了。
#include <cstdio>
#include <cstring>
#include <cstdlib>
const int MAXN = 100000 + 10;
int main(){
char ch[MAXN];
while(scanf("%s", ch)!=EOF){
if(strlen(ch) <= 1){
printf("0
");
}else{
int cnt = 1, ans =0;
for(int i=1; i<strlen(ch); ++i)
{
if(ch[i]==ch[i-1]){
cnt++;
}else{
if(cnt > 0){
ans += cnt/2;
}
cnt = 1;
}
}
ans += cnt/2;
printf("%d
", ans);
}
}
}