一开始没读懂题,耗时不久,写篇题解帮大家少走弯路0.0
字符串中最长的连续出现的字符
几个要说明的问题:
1.对于每次循环,通过j找到了下一个不同字符出现的位置后,要让i=j-1而不是i=j,因为
循环结束后i还会自加,所以这样才能使得i始终指向一个连续字符的开始;
2.这里j-i就是每个连续字符出现的次数;
3.如果最长连续出现的字符不止一个,题目要求输出第一个,自己写条件的时候就让新的
长度只有在大于Max(当前最大长度)时才更新,这样即使后边又出现了同样最长的字符
时Max也不会更新,即始终指向第一次出现的最长连续字符,所以不用特判;
搞清楚这些这题就是白给了。。。
#include<bits/stdc++.h>
using namespace std;
const int N = 200;
int main()
{
int n;
cin >> n;
while (n--)
{
string str;
cin >> str;
int Max = 0;
char Maxchar = str[0];
for (int i = 0; i < str.size(); i++)
{
int j = i + 1;
while (str[j] == str[i] && j < str.size()) j++;
if (Max < j - i) //j-i为字符str[i]重复出现的次数,即他的连续出现的长度
{
Max = j - i;
Maxchar = str[i];
}
i = j - 1;
}
cout << Maxchar << " " << Max << endl;
}
return 0;
}