7.字符统计

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());
		}

	}
}

猜你喜欢

转载自blog.csdn.net/qq_45874107/article/details/113785173