time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

There are n stones on the table in a row, each of them can be red, green or blue. Count the minimum number of stones to take from the table so that any two neighboring stones had different colors. Stones in a row are considered neighboring if there are no other stones between them.

Input

The first line contains integer n (1 ≤ n ≤ 50) — the number of stones on the table.

The next line contains string s, which represents the colors of the stones. We'll consider the stones in the row numbered from 1 to n from left to right. Then the i-th character s equals "R", if the i-th stone is red, "G", if it's green and "B", if it's blue.

Output

Print a single integer — the answer to the problem.

Sample test(s)
input
3
RRG
output
1
input
5
RRRRR
output
4
input
4
BRBG
output
0

解题说明:顺序遍历即可,贪心,不是DP


#include <iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;

int main()
{
	int i,n,j;
	int sum;
	char a[101];
	sum=0;
	scanf("%d",&n);
	scanf("%s",&a);
	j=0;
	for(i=1;i<n;i++)
	{
		if(a[i]==a[j])
		{
			sum++;
		}
		else
		{
			j=i;
		}
	}
	printf("%d\n",sum);
	
	return 0;
}


Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐