L1-003 个位数统计
时间: 2025-02-01 08:50:17 浏览: 70
### L1-003 个位数统计
对于个位数统计这一类问题,核心在于如何有效地提取并处理整数中的每一位数字。通过遍历给定范围内的每一个数值,并逐位解析这些数值来实现目标。
在 JavaScript 中可以利用字符串转换的方式轻松获取每位上的数字:
```javascript
function countDigits(num) {
let strNum = num.toString();
const digitCount = new Array(10).fill(0);
for (let char of strNum) {
if (!isNaN(char)) {
digitCount[parseInt(char)]++;
}
}
return digitCount;
}
```
上述代码定义了一个 `countDigits` 函数用于接收一个正整数参数 `num` 并返回长度为 10 的数组表示各个位上出现次数[^1]。
当面对更复杂的情况如连续区间内所有自然数中某特定数码 K 出现频率时,则需进一步优化算法逻辑以提高效率。此时可采取分治策略减少不必要的重复运算,具体做法是从最高位开始逐步向下分解直到最低位,在此过程中累积符合条件的结果数量。
为了更好地理解和应用这类题目,建议多练习不同类型的实例加深印象,同时也要注重对基础概念的理解与巩固[^2]。
相关问题
l1-003 个位数统计 java
题目描述
给定一串数字,统计其中每个数字出现的次数。
输入格式:
输入在一行中给出一串不超过10^5^个数字,其间以空格分隔。数字为~9的整数。
输出格式:
在一行中按照格式“digit : count”输出每个数字出现的次数,其中digit是数字,count是次数,格式间有1个空格。输出按照digit的升序顺序排列。
输入样例:
100311
输出样例:
: 2
1 : 3
L1-003 个位数统计c++
### 方法概述
要解决 **L1-003 个位数统计** 的问题,可以通过两种主要方式来实现:一种是从输入的整数逐步提取每一位数字并计数;另一种是将输入视为字符串处理,逐字符判断其数值范围并进行统计。
以下是基于这两种方法的具体实现:
---
#### 方法一:通过整数运算提取每位数字
这种方法的核心在于不断取模 (`%`) 和除法操作 (`/`) 来获取当前数字的最低位,并将其存入对应的计数器中。最终遍历整个数组输出结果。
```cpp
#include <iostream>
using namespace std;
int main() {
int N, digit;
int count[10] = {0}; // 初始化一个长度为10的数组用于存储0~9的出现次数
cin >> N;
while (N > 0) { // 当N不等于0时循环
digit = N % 10; // 获取最后一位数字
count[digit]++; // 对应位置加1
N /= 10; // 去掉最后一位继续下一轮计算
}
for (int i = 0; i < 10; i++) { // 遍历count数组输出非零项
if (count[i] != 0) {
cout << i << ":" << count[i] << endl;
}
}
return 0;
}
```
此代码逻辑清晰简单,适用于纯整型数据输入的情况[^2]。
---
#### 方法二:通过字符串解析逐字符统计
当输入可能包含其他非数字字符或者希望更加灵活地处理大数据量时,可以采用读取字符串的方式逐一分析其中的有效数字字符。
```cpp
#include <bits/stdc++.h>
using namespace std;
int main(){
string inputStr;
cin >> inputStr;
int counts[10] = {0};
for(char ch : inputStr){
if(ch >= '0' && ch <= '9') // 判断是否为有效数字字符
counts[ch - '0']++;
}
for(int i=0;i<10;i++){
if(counts[i]>0)
cout<<i<<":"<<counts[i]<<endl;
}
return 0;
}
```
这段代码能够很好地兼容各种形式的数据源,尤其是对于那些混合了字母或其他特殊符号的大规模文本文件中的数字抽取非常有用[^3]。
---
### 注意事项
无论是哪种方法,在实际应用过程中都需要注意边界条件以及异常情况下的行为表现。比如负数、超大正整数溢出等问题都需要额外考虑进去。此外,虽然上述第二种方案提到了内存优化建议——缩小辅助数组尺寸至刚好满足需求(即`int x[10]={0}`),但在现代编译环境下这点开销通常可忽略不计除非特别强调性能瓶颈所在。
---
阅读全文
相关推荐
















