Java—字符统计2

    科技2022-07-11  81

    Java—字符统计2

    Description 输入英文句子,输出该句子中除了空格外出现次数最多的字符及其出现的次数。

    Input 输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句子,占一行。

    Output 逐行输出每个句子中出现次数最多的字符及其出现的次数(如果有多个字符的次数相同,只输出ASCII码最小的字符)。

    Sample Input I am a student a good programming problem ABCD abcd ABCD abcd Output a 2 o 4 A 2

    import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner reader = new Scanner(System.in); String str; int i; while (reader.hasNext()) { int da[] = new int[26];// 记录大写字母,数组空间26,所以下面的大写字母存入的时候根据其在ASCII码值得减去65 int xiao[] = new int[26];// 记录小写字母,数组空间26,所以下面的小写字母存入的时候根据其在ASCII码值得减去97 int maxcount = 0; char min = 'A';// A在ASCII码的字母的位置最前,数值最小 str = reader.nextLine(); char ch[] = str.toCharArray();// 将字符串转换为字符数组 for (i = 0; i < str.length(); i++) { if (ch[i] >= 'A' && ch[i] <= 'Z')// 大写字母情况 { da[ch[i] - 65]++; if (da[ch[i] - 65] >= maxcount) { if (da[ch[i] - 65] > maxcount)// 哪个字母出现的次数多就取谁 { maxcount = da[ch[i] - 65]; min = ch[i]; } else if (da[ch[i] - 65] == maxcount && min > ch[i])// 当两个字母出现的次数一样时,取ASCII码最小的字母 { maxcount = da[ch[i] - 65]; min = ch[i]; } } } else if (ch[i] >= 'a' && ch[i] <= 'z')// 小写字母情况 { xiao[ch[i] - 97]++; if (xiao[ch[i] - 97] >= maxcount) { if (xiao[ch[i] - 97] > maxcount)// 哪个字母出现的次数多就取谁 { maxcount = xiao[ch[i] - 97]; min = ch[i]; } else if (xiao[ch[i] - 97] == maxcount && min > ch[i])// 当两个字母出现的次数一样时,取ASCII码最小的字母 { maxcount = xiao[ch[i] - 97]; min = ch[i]; } } } } System.out.println(min + " " + maxcount); } } }
    Processed: 0.010, SQL: 8