求一个字符串中最长的连续出现的字符,输出该字符及其出现次数,字符串中无空白字符(空格、回车和 tab、),如果这样的字符不止一个,则输出第一个。
输入格式
第一行输入整数 N,表示测试数据的组数。
每组数据占一行,包含一个不含空白字符的字符串,字符串长度不超过 200。
输出格式
共一行,输出最长的连续出现的字符及其出现次数,中间用空格隔开。
输入样例:
2
aaaaabbbbbcccccccdddddddddd
abcdefghigk
输出样例:
d 10
a 1
双指针算法 和Y总学的(双指针听起来高大上其实也没啥)
i作为起点,j从i开始遍历,一直跑到第一个不等于s[i]的位置
零碎知识:两个单引号之间不加任何内容是不允许的,因此char 字符在初始化的时候中间需要添加一个空格
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
string s;
char p ;
while (n--)
{
cin >> s;
int ans = 0;
for (int i = 0;i<s.size();i++)
{
int j = i;
while (s[i]==s[j]&&j<s.size()) j++;
if (j-i>ans)
{
ans = j-i;
p = s[i];
}
}
cout<<p<<" "<<ans<<endl;
}
return 0;
}
来日方长 扎扎实实地打好算法基础 平静地做算法题 也是人生的一种乐——Py小郑