1021 個位數統計
阿新 • • 發佈:2021-01-13
技術標籤:# 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。
給定一個k位整數N=dk−110k−1+⋯+d1101+d0(0≤di≤9,i=0,⋯,k−1,dk−1>0),請編寫程序統計每種不同的個位數字出現的次數。例如:給定N=100311,則有2個0,3個1,和1個3。
輸入格式:
每個輸入包含 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());
}
}
}