经验值: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;
}
1737

被折叠的 条评论
为什么被折叠?



