这道题开始没思路,后来知道用快慢指针。但是不对,然后发现有一个地方赋值写错了,改了之后还不对。最后加了输出调试才知道循环正常结束。但最后一个字符没有参与打擂比较,所以出循环之后还要在加一次比较。
#include<iostream>
using namespace std;
int main()
{
//freopen("xxx.in","r",stdin);
//freopen("yyy.out","w",stdout);
int n;
cin >> n;
while(n--)
{
string m;
cin >> m;
int i=0,j=0,maxcs=0,cnt=0;
string maxzf="";
//aaaaabbbbbcccccccdddddddddd
while(j<m.size())
{
if(m[j]==m[i])
{
j++;
cnt++;
}
else
{
//printf("m[i:%d]=%c m[j:%d]=%c\n",i,m[i],j,m[j]);
if(cnt>maxcs)
{
maxcs=cnt;
maxzf=m[i];
}
i=j;
cnt=0;//
//printf("---m[i:%d]=%c m[j:%d]=%c\n",i,m[i],j,m[j]);
}
}
if(cnt>maxcs)
{
maxcs=cnt;
maxzf=m[i];
}
cout << maxzf << " " << maxcs << '\n';
}
//fclose(stdin);
//fclose(stdout);
return 0;
}