题目
求一个字符串中最长的连续出现的字符,输出该字符及其出现次数,字符串中无空白字符(空格、回车和tab),如果这样的字符不止一个,则输出第一个。
输入格式:
第一行输入整数N,表示测试数据的组数。
每组数据占一行,包含一个不含空白字符的字符串,字符串长度不超过200。
输出格式:
共一行,输出最长的连续出现的字符及其出现次数,中间用空格隔开。
输入样例:
2
aaaaabbbbbcccccccdddddddddd
abcdefghigk
输出样例:
d 10
a 1
代码
java
//java
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); //输入n
sc.nextLine(); //吃掉换行符,不然后面的nextLine()会读进去提前结束输入,导致后面的数据无法读入
for(int i=0;i<n;i++){
String s = sc.nextLine(); //输入一行数据
longestStr(s); //调用函数查找并输出最长连续字符
}
}
public static void longestStr(String s){
char demp='a',longestchar='a'; //demp用来存储当前字符,longestchar用来存储最长的那个字符
int longest = 0,count = 0; //longest用来存储最长字符的连续次数,count用来记录当前字符的连续次数
char[] c = s.toCharArray(); //将string类型转换成char类型数组,方便单个字符比较
for(int i=0;i<c.length;i++){ //遍历整个数组
if(demp==c[i]){ //若字符没发生变化说明还是同一字符,count++
count++;
}
if(demp!=c[i] || i>=c.length-1){ //若字符发生变换 或 到达数组边界
if(count>longest){ //发生变化后比较当前字符连续次数count是否大于最大连续次数longest
longest=count; //若大于最大连续次数,将count赋值给longest
longestchar=demp;
}
count=1; //count变为1重新计数
demp=c[i]; //demp变为下一字符
}
}
System.out.println(longestchar+" "+longest); //输出最长字符longestchar及其连续次数longest
}
}
c++解题代码有机补上