hihocoder-1850-字母去重

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);
	}
 	} 
} 

  

原文地址:https://www.cnblogs.com/zhang-yd/p/9795157.html