字符统计2
Time Limit: 1000 ms
Memory Limit: 65536 KiB
Problem Description
输入英文句子,输出该句子中除了空格外出现次数最多的字符及其出现的次数。
Input
输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句子,占一行。
Output
逐行输出每个句子中出现次数最多的字符及其出现的次数(如果有多个字符的次数相同,只输出ASCII码最小的字符)。
Sample Input
I am a student a good programming problem ABCD abcd ABCD abcd
Sample Output
a 2 o 4 A 2
Hint
Source
java数组初始化方法:java.util.Arrays.fill(数组名,数值)
参考:https://blog.youkuaiyun.com/alenc/article/details/1500113
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
char c[] = new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
while (input.hasNext()) {
char arr[] = input.nextLine().toCharArray();
int num[] = new int[52];
Arrays.fill(num, 0);//Arrays.fill() 方法只适合于把数组用同一个值初始化。
int sum = 0, t = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < 52; j++) {
if (c[j] == arr[i]) {
num[j]++;
if (num[j] > sum) {
sum = num[j];
t = j;
}
if (num[j] == sum) {
if (c[t] > c[j])
t = j;
}
break;
}
}
}
System.out.printf("%c %d\n", c[t], sum);
}
}
}