解本题总共分三步
1.将字符串转换成字符数组。创建字符ascll码对应的整型数组,该数组长度必须大于128,字符的ascll码值就是该数组的下标,遍历字符数组,字符每出现一次对应ascll下标的整数就加一。
2.找出该整型数组的最大值。
3.在整型数组中匹配max,找到则将该整数下标对应的字符加入可变字符序列,max自减直至max为零。(本题无需考虑字符个数相同的情况,因为字符ascll码对应的整型数组本来就是排好的)
源代码
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main{
public static void main(String[] args)
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str;
try{
while((str=br.readLine())!=null)
{
System.out.println(count(str).toString());
}
}catch(IOException e){
e.printStackTrace();
}
}
public static StringBuilder count(String str)
{
char[] strArray=str.toCharArray();
int[] chArray=new int[129];
//字符对应ascll码值下标元素自增来统计数量
for(char i:strArray)
chArray[(int)i]++;
int max=0;
//找出字符数量最多的ascll码值
for(int i=0;i<chArray.length;i++)
if(max<chArray[i])
max=chArray[i];
StringBuilder sb=new StringBuilder();
//按数量从大到小添加到可变字符序列sb
while(max!=0)
{
for(int i=0;i<chArray.length;i++)
if(chArray[i]==max)
sb.append((char)i);
max--;
}
return sb;
}
}

京公网安备 11010502036488号