请尝试用双指针做
new知识:if的{}语句可以用,代替
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n; cin>>n;
while(n--)
{
string s;
cin>>s;
int max=0; char ans;
for(int i=0;i<s.size();i++)
{
int j=i;//因为在循环后i=j也要用到变量j,所以单另出来
for(;j<s.size() && s[j]==s[j+1];) j++; //可以直接改成while
//因为j有可能不满足for循环条件,但下边这个if语句还是要有,所以不能放到for大循环里
if(j-i+1>max) max=j-i+1,ans=s[j];
i=j;
}
printf("%c %d\n",ans,max);
}
return 0;
}
自己复杂思路
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main()
{
int n; cin>>n;
while (n--)
{
string s;
cin>>s;
int cnt =1,max=1,res=0;
for(int i=s.size()-1;i>=0;i--)
{
if(s[i]==s[i-1])
{
cnt++;
if(cnt>=max)
{
max=cnt;
res=i-1;
}
}
else cnt=1;
}
cout<<s[res]<<" "<<max<<'\n';
}
return 0;
}