1. 程式人生 > 其它 >1021 個位數統計

1021 個位數統計

技術標籤:# PAT乙級題目

給 定 一 個 k 位 整 數 N = d ​ k − 1 ​ ​ 10 ​ k − 1 ​ ​ + ⋯ + d ​ 1 ​ ​ 10 ​ 1 ​ ​ + d ​ 0 ​ ​ ( 0 ≤ d ​ i ​ ​ ≤ 9 , i = 0 , ⋯ , k − 1 , d ​ k − 1 ​ ​ > 0 ) , 請 編 寫 程 序 統 計 每 種 不 同 的 個 位 數 字 出 現 的 次 數 。 例 如 : 給 定 N = 100311 , 則 有 2 個 0 , 3 個 1 , 和 1 個 3 。 給定一個 k 位整數 N=d ​k−1 ​​ 10 ​k−1 ​​ +⋯+d ​1 ​​ 10 ​1 ​​ +d ​0 ​​ (0≤d ​i ​​ ≤9, i=0,⋯,k−1, d ​k−1 ​​ >0),請編寫程式統計每種不同的個位數字出現的次數。例如:給定 N=100311,則有 2 個 0,3 個 1,和 1 個 3。

kN=dk110k1++d1101+d0(0di9,i=0,,k1,dk1>0)N=100311203113

輸入格式:

每個輸入包含 1 個測試用例,即一個不超過 1000 位的正整數 N。

輸出格式:

對 N 中每一種不同的個位數字,以 D:M 的格式在一行中輸出該位數字 D 及其在 N 中出現的次數 M。要求按 D 的升序輸出。

輸入樣例:

100311

輸出樣例:


0:2
1:3
3:1

題解一:


import java.util.*;
public class
Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.next(); int Number[] = new int[10]; for (int i = 0; i < str.length(); i++) { int n = str.charAt(i) - '0'; Number[n]++; }
for (int i=0;i<10;i++){ if(Number[i] == 0) continue; System.out.println(i + ":" + Number[i]); } } }

題解二:

import java.util.*;
public class Main {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        HashMap<Integer,Integer> hashMap = new HashMap<>();
        String str = scanner.next();
        for(int i=0;i<str.length();i++){
            int n = str.charAt(i) - '0';
            if(hashMap.containsKey(n)){
                hashMap.put(n,hashMap.get(n)+1);
            }
            else {
                hashMap.put(n,1);
            }
        }

        for(Map.Entry<Integer, Integer> i:hashMap.entrySet()){
            System.out.println(i.getKey() + ":" + i.getValue());
        }
    }
}