经验值:1200
时间限制:1000毫秒
内存限制:128MB
合肥市第36届信息学竞赛(2019年)
不许抄袭,一旦发现,直接清空经验!
题目描述 Description
请统计输入的字符串中最大连续重复字符的个数, 要求统计找出给定字符串中哪些字符连续出现的次数最多,并且要统计这些字符一共连续出现了多少次。
例如:字符序列为 AAA222BBAAAaa,则在这个字符序列中,字符 A 和字符 2 连续出现的次数最多,都是 3 次。
输入描述 Input Description
共两行,第一行为字母序列中的字母个数 n(1≤N≤1000) ,
第二行为 n个字符组成的字符串序列。
输出描述 Output Description
共两行,第一行为最多连续出现次数最多的字符,若有多个用空格分隔,输出顺序为他们在字符串中的先后顺序。
第二行为连续出现重复的最大次数。
样例输入 Sample Input
13 AAA222BBAAAaa
样例输出 Sample Output
A 2 3
数据范围及提示 Data Size & Hint
1≤n≤1000 33≤字符数值即 ASCII 码≤126
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main(){int n;string str;int i=0, max=0, cnt=0;char mb[128]={0};//存储连续出现次数最多的字符cin>>n;cin>>str;while(i<n){char ch=str[i];int shu=1;//记录连续相同字符的个数for(i=i+1; str[i]==ch; i++){shu++; } if(shu>max){max=shu;//更新最大值 cnt=0;mb[cnt]=ch;}else if(shu==max){//去重int k; for(k=0; k<=cnt; k++){if(mb[k]==ch){//有重复 break;}} if(k>cnt){//没有重复 cnt++;//新增一个元素 mb[cnt]=ch;//相同的次数 } }} for(i=0; i<=cnt; i++){cout<<mb[i]<<" ";} cout<<endl<<max<<endl;//最大次数 return 0;
}