求一个字符串中最长的连续出现的字符,输出该字符及其出现次数,字符串中无空白字符(空格、回车和 tab、),如果这样的字符不止一个,则输出第一个。
输入格式
第一行输入整数 N,表示测试数据的组数。
每组数据占一行,包含一个不含空白字符的字符串,字符串长度不超过 200。
输出格式
共一行,输出最长的连续出现的字符及其出现次数,中间用空格隔开。
输入样例:
2 aaaaabbbbbcccccccdddddddddd abcdefghigk
输出样例:
1. d 10 2. 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小郑