用Java语言,如何设计一个算法来确定给定十进制整数 n(1 ≤ n ≤ 10^9)表示的书籍总页码中,每个数字 (0, 1, 2, ..., 9) 分别出现了多少次?
时间: 2024-09-14 22:09:54 浏览: 39
在Java中,可以使用哈希表(HashMap或Hashtable)来设计一个算法来解决这个问题。以下是基本步骤:
1. 初始化一个长度为10的HashMap,用于存储每个数字0-9出现的次数。将所有键初始化为0。
```java
Map<Integer, Integer> countMap = new HashMap<>();
for (int i = 0; i < 10; i++) {
countMap.put(i, 0);
}
```
2. 使用一个循环遍历整数n,对于每一位:
- 获取当前位的数值,例如通过 `n % 10` 得到个位数。
- 将对应的计数加一。如果n不是一位数(如n > 9),则先对10取余得到一位数,再更新计数。
```java
while (n != 0) {
int digit = n % 10;
countMap.put(digit, countMap.getOrDefault(digit, 0) + 1);
n /= 10;
}
```
3. 最后,HashMap的值就是对应数字出现的次数。因为HashMap的key就是数字,value就是它的频数。
```java
for (Map.Entry<Integer, Integer> entry : countMap.entrySet()) {
System.out.println("数字 " + entry.getKey() + " 出现了 " + entry.getValue() + " 次");
}
```
阅读全文