/**Description
Tom有许多的卡片有四种颜色分别为Red Green Blue Yellow
随机拿出N张卡片排成一列,为美观,Tom想替换掉相连相同颜色卡片
Input
第一行输入一个整数N,表示n个字符,接着输入”R”, ”G” ,”B”, ”Y”中的一个字符表示第I张卡片的颜色
Output
输出需要替换掉的卡片数
Sample Input
10
RGGBBBRYYB
Sample Output
3
Tom有许多的卡片有四种颜色分别为Red Green Blue Yellow
随机拿出N张卡片排成一列,为美观,Tom想替换掉相连相同颜色卡片
Input
第一行输入一个整数N,表示n个字符,接着输入”R”, ”G” ,”B”, ”Y”中的一个字符表示第I张卡片的颜色
Output
输出需要替换掉的卡片数
Sample Input
10
RGGBBBRYYB
Sample Output
3
**/
#include<stdio.h>
void main()
{
char a[100];
int i,j,y=1,N,num=0;
scanf("%d",&N); //输入N个字符
getchar(); //吃掉缓冲区的回车
for(i=0; i<N; i++)
{
scanf("%c",&a[i]);
}
a[N+1]='\0'; //定义数组以'\0'结尾
for(i=0,j=i+1; i<N; )
{
if(a[i]==a[j]) //循环判断前一个字符与后一个字符是否相等
{
y++; //如相等记数加一
i++;
j++;
}
else //否则i=j,从下一位字符开始
{
i=j;
j=j+1;
if(y%2==0)
num+=y/2; //记需更换的字符
else
num+=(y-1)/2;
y=1;
}
}
printf("%d",num);
}