测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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; }
上一题 下一题