【JAVA】UVA 10008 - What's Cryptanalysis?

題目原文:https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=12&page=show_problem&problem=949

Sample Input
3 要判斷幾行文字
This is a test.
Count me 1 2 3 4 5.
Wow!!!! Is this question easy?

Sample Output
S 7
T 6
I 5
E 4
O 3
A 2
H 2
N 2
U 2
W 2
C 1
M 1
Q 1
Y 1

注意:

  1. 只需要計算英文字母且大小寫不分,範例輸出可看出皆為大寫,因此直接將所有英文字母轉為大寫。
  2. 按照英文字母的使用頻率由小到大輸出,若有一樣次數的英文字母則由字母先後順序輸出。
import java.util.*;
public class main{
    public static void main(String[] args) {
        
            Scanner sc=new Scanner(System.in);
            int data[] = new int[26];
            int Length=0,count=sc.nextInt(); //count代表有幾行字串
            String a = sc.nextLine(); 
            while(count-- >0){
            	String temp = sc.nextLine().toUpperCase(); //字串內容,將之轉為大寫
            	Length += temp.length();
            	
            	for(int i=0 ; i<temp.length();i++){
            		if('A'<=temp.charAt(i) && temp.charAt(i)<='Z'){
            			data[(int)temp.charAt(i)-65]++; //將英文字母存至對應數的陣列中,若有重複則++ , 這邊的-65是ASCII減去大寫A
            		}
            	}
            
            }
            
            while(--Length>0){ 
            	for(int i=0;i<26;i++){
            		if(data[i]==Length){
            			System.out.println(((char)(i+65))+" "+data[i]);
            		}
            	
            	}
            
            }
    }
};