1. 程式人生 > >PAT——1042. 字符統計

PAT——1042. 字符統計

sta lac tex acea one 少包 www 一個 rgs

請編寫程序,找出一段給定文字中出現最頻繁的那個英文字母。

輸入格式:

輸入在一行中給出一個長度不超過1000的字符串。字符串由ASCII碼表中任意可見字符及空格組成,至少包含1個英文字母,以回車結束(回車不算在內)。

輸出格式:

在一行中輸出出現頻率最高的那個英文字母及其出現次數,其間以空格分隔。如果有並列,則輸出按字母序最小的那個字母。統計時不區分大小寫,輸出小寫字母。

輸入樣例:

This is a simple TEST.  There ARE numbers and other symbols 1&2&3...........

輸出樣例:

e 7


 1 package com.hone.basical;
2 3 import java.util.Scanner; 4 5 /** 6 * 原題目:https://www.patest.cn/contests/pat-b-practise/1039 7 * @author Xia 8 * 思路:首先處理題目中的條件 9 * (1)不區分大小寫字母,則可以利用toLowerCase()將字符中所有的大寫字母都轉化為小寫 10 * (2)可以先去掉空格的字符(利用正則表達式來實現) 11 * (3)方法:默認第一個字符為出現次數最多的字符,然後用後面的字符與他做比較,如果字符個數大於 12 * 當前字符,則繼續判斷是否為小寫字母,如果滿足,則將字符替換,以及字符次數替換。
13 * 如果字符次數相同,則比較當前字符出現的次數和max的大小,然後再做替換。 14 */ 15 16 public class basicalLevel1042charCount { 17 public static void main(String[] args) { 18 Scanner in = new Scanner(System.in); 19 //定義一個數組用於存儲 20 String content = in.nextLine(); 21 int max = 0; //定義最多字符個數
22 char maxchar = 0; //定義最多字符 23 content = content.replaceAll("\\s+", ""); //去掉空白字符,制表符 24 content = content.toLowerCase(); 25 int[] a = new int[300]; 26 for (int i = 0; i < content.length(); i++) { 27 a[content.charAt(i)]++; //這裏仍然采取前面多次使用的(將讀入的數作為下標) 28 if ((a[content.charAt(i)] > max)&&(content.charAt(i)>=97&&content.charAt(i)<=122)) { 29 max = a[content.charAt(i)]; 30 maxchar = content.charAt(i); 31 } 32 //這裏用一個if判斷讓其輸出並且的時候最小的字符 33 if ((a[content.charAt(i)] == max)&&(content.charAt(i)>=97&&content.charAt(i)<=122)) { 34 if (content.charAt(i)<maxchar) { 35 max = a[content.charAt(i)]; 36 maxchar = content.charAt(i); 37 } 38 } 39 } 40 System.out.println(maxchar+" "+max); 41 } 42 }

PAT——1042. 字符統計