双指针思想,相同思路的还有799.最长连续不重复子序列
import java.util.Scanner;
public class Main{
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
while(n-->0){
String s = sc.next();
int k = 0,i = 0,j = 0;
char c = ' ';//用于存放出现次数最多的字符
while(j<s.length()){//当j小于字符串长度时,不断向后遍历
while(s.charAt(i)==s.charAt(j)){//当i与j指向的字符相同时,j 指向下一个
j++;
//需要判断是否小于字符串长度,否则容易产生越界错误
if(j<s.length()) continue; //是则继续
else break; //否则退出循环不再比较
}
//退出循环时[i,j)区间内就是i指向字符的最大长度
if(k<j-i){
k = j-i;//k用于记录最大长度,如果有更长的则更新
c = s.charAt(i);//并修改次数最多的字符
}
i = j;//使i与j指向新字符,以便继续判断
}
System.out.printf("%c %d\n",c,k);
}
}
}