7.字符统计
题目描述
输入一个只包含小写英文字母和数字的字符串,按照不同字符统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出。
输入描述:
一个只包含小写英文字母和数字的字符串。
输出描述:
一个字符串,为不同字母出现次数的降序表示。若出现次数相同,则按ASCII码的升序输出。
输入
aaddccddc
1b1bbbbbbbbb
输出
cda
b1
分析
1.键盘录入一个字符串
2.将其转换为char类型的数组进行存储
3.建立一个128长的数组,因为ASCII码是128个
4.对每一个字符进行标记,并统计次数
5.挑选出出现次数最多的,开始拼接
代码实现
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main7 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
while ((str = br.readLine()) != null) {
char[] c = str.toCharArray();
int[] arr = new int[128];//ASCII码 128个
for (int i = 0; i < c.length; i++) {
arr[c[i]]++;
}
int max = 0;
for (int i = 0; i < arr.length; i++) {
if (max < arr[i])
max = arr[i];
}
StringBuilder sb = new StringBuilder();
while (max != 0) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == max)
sb.append((char) i);
}
max--;
}
System.out.println(sb.toString());
}
}
}