A27714. 数色块(count)问题描述小可可进入小学一年级,数学老师为了锻炼同学们识别颜色和数数的能力,让同学们数一根长条上有多少个色块。具体来说,就是给你一个 1×n 的方格,每个方格涂红色或蓝色,相邻的涂有相同颜色的方格算同一个色块,例如,下图n=12,共有 8 个不同的色块。现在,请你编程计算有多少个色块。
填空题
中等
知识点
题目描述
数色块(count)
问题描述
小可可进入小学一年级,数学老师为了锻炼同学们识别颜色和数数的能力,让同学们数一根长条上有多少个色块。具体来说,就是给你一个 1×n 的方格,每个方格涂红色或蓝色,相邻的涂有相同颜色的方格算同一个色块,例如,下图n=12,共有 8 个不同的色块。

现在,请你编程计算有多少个色块。
输入格式
输入有两行:
第一行一个整数 n,表示方格的长度。
第二行一个长度为 n 的字符串,字符串的第 i 个字符表示第 i 个方格涂的颜色,若 为’R’表示该方格涂的是红色,若为’B’表示该方格涂的是蓝色。
输出格式
输出一行,包括一个整数 ans,表示这条方格上共有 ans 个色块。
输入输出样例 1
输入
5
RRRRR
输出
1
输入输出样例 2
输入
12
RBBRRRBRBBRB
输出
8
数据范围
对于 20%的数据满足:方格的颜色全为’R’或’B’;
对于 50%的数据满足:1≤n≤2000;
对于 100%的数据满足:1≤n≤100000,字符串仅包含’R’、'B’两种字符。
参考答案
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
string s;
cin >> s;
int ans = 1;
for(int i=1;i<n;i++){
if(s[i-1] == s[i])continue;//直接前后比较是否相等
else ans++;
}
cout<<ans<<"\n";
return 0;
}
上一题
下一题