统计1到100范围内每个数字0到9出现的总次数,核心逻辑是遍历1到100的所有整数,将每个整数拆分为单个数字,再对对应数字的出现次数进行累加,最终输出每个数字的统计结果。

核心实现思路
整个统计过程可以分为三个步骤:
- 初始化一个长度为10的数组,索引对应数字0到9,初始值都为0,用来存储每个数字的出现次数。
- 使用循环遍历1到100的所有整数,对每个整数进行拆分,得到它的每一位数字。
- 每拆分出一个数字,就把对应索引的数组值加1,遍历完成后数组中的值就是每个数字的总出现次数。
Python实现示例
Python中可以很方便地将整数转换为字符串来拆分每一位,代码实现如下:
# 初始化计数数组,索引0对应数字0,索引9对应数字9
count_list = [0] * 10
# 遍历1到100的所有整数
for num in range(1, 101):
# 将整数转换为字符串,遍历每个字符得到每一位数字
for digit_char in str(num):
digit = int(digit_char)
count_list[digit] += 1
# 输出统计结果
for i in range(10):
print(f"数字{i}出现的总次数:{count_list[i]}")
Java实现示例
Java中可以通过取模和整除操作拆分整数的每一位,代码实现如下:
public class DigitCount {
public static void main(String[] args) {
// 初始化计数数组
int[] countArray = new int[10];
// 遍历1到100的所有整数
for (int num = 1; num <= 100; num++) {
int temp = num;
// 拆分每一位数字,当temp为0时结束循环
while (temp > 0) {
int digit = temp % 10;
countArray[digit]++;
temp = temp / 10;
}
}
// 输出统计结果
for (int i = 0; i < 10; i++) {
System.out.println("数字" + i + "出现的总次数:" + countArray[i]);
}
}
}
结果说明
运行上述代码后可以得到每个数字的出现次数,其中数字1出现的次数最多,因为100中包含两个1,而数字0出现的次数相对较少,因为1到100中0只出现在10、20等整十数和100中。这种统计方法的时间复杂度为O(N*M),其中N是遍历的数字个数,M是每个数字的平均位数,对于1到100的小范围统计效率完全足够。