🌵🌵🌵前言
题目
求一个字符串中最长的连续出现的字符,输出该字符及其出现次数,字符串中无空白字符(空格、回车和 tab),如果这样的字符不止一个,则输出第一个。
- 输入格式
第一行输入整数 N,表示测试数据的组数。
每组数据占一行,包含一个不含空白字符的字符串,字符串长度不超过 200。
- 输出格式
共一行,输出最长的连续出现的字符及其出现次数,中间用空格隔开。
- 输入样例:
2
aaaaabbbbbcccccccdddddddddd
abcdefghigk
- 输出样例:
d 10
a 1
代码
#include <iostream>
#include <cstring>
using namespace std;
string s;
int n;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>s;
int len=s.length();
char c,max_c;
int max=0;
int num=0;
for(int i=0;i<len;i++){
if(i==0){//第一个字符直接计数为1
num=1;
c=s[0];
}
else if(s[i]==s[i-1]){
if(i==len-1 && num+1>max){
//此时至最后一个字符,num+1才为此字符个数
max=num+1;
max_c=c;
}
num++; //不跳出则num++
// cout<<c<<" "<<num<<endl;
}
else if(s[i]!=s[i-1]){
if(num>max){//判断,若大于最大数则更新
max=num;
max_c=c;
}
c=s[i];
num=1;//重置num
}
}
cout<<max_c<<" "<<max<<endl;
}
return 0;
}