字符统计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
package text;
import java.util.Arrays;
import java.text.DecimalFormat;
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner cin = new Scanner(System.in);
while(cin.hasNext())
{
int a[] = new int[1000];
String ch = cin.nextLine();
int i;
for(i = 0; i < ch.length(); i++)
{
if(ch.charAt(i) != ' ')
{
if(ch.charAt(i) >= 'A' && ch.charAt(i) <= 'Z') {
a[ch.charAt(i)-'A']++;//将大写字母存储在下标0-26里
}
else if(ch.charAt(i) >= 'a' && ch.charAt(i) <= 'z') {
a[ch.charAt(i)-'a' + 26]++;//将小写字母存储在下标26-42里
}
}
}
int max = 0, b = 0;
for(i = 0; i < a.length; i++) {
if(max < a[i])
{
max = a[i];
b = i;
}
}
if(b < 26) {
char e = (char)('A' + b);//得到对应的字符
System.out.println(e + " " + max);
}
else
{
char e = (char)('a' + b - 26);
System.out.println(e + " " + max);
}
}
cin.close();
}
}