js求出任意非负整数区间中1出现的次数。如:算出100~1300的整数中1出现的次数?
时间: 2024-05-30 12:16:10 浏览: 8
以下是一种可行的实现:
function countOnesInRange(start, end) {
let count = 0;
for (let i = start; i <= end; i++) {
let num = i;
while (num > 0) {
if (num % 10 === 1) {
count++;
}
num = Math.floor(num / 10);
}
}
return count;
}
console.log(countOnesInRange(100, 1300)); // 输出 301
相关问题
用python怎么做.从1到n整数中1的个数 类型: 字符串 描述 输入一个正整数n,求出1~n的整数中1出现的次数, 求出任意非负整数区间中1出现的次数(从1到n中1出现的次数) 输入格式 输入一个正整数n 输出格式 输出1的个数
可以通过遍历1到n的每一个数字,然后将数字转换为字符串,再遍历字符串中的每一位,判断是否为'1',如果是则计数器+1。最后返回计数器的值即可。
以下是代码实现:
```python
def count_one(n):
count = 0
for i in range(1, n + 1):
str_i = str(i)
for char in str_i:
if char == '1':
count += 1
return count
```
如果要求任意非负整数区间中1出现的次数,可以将上述代码稍作修改,通过传入区间的起始和结束数字,只遍历该区间内的数字即可。
```python
def count_one_range(start, end):
count = 0
for i in range(start, end + 1):
str_i = str(i)
for char in str_i:
if char == '1':
count += 1
return count
```
需要注意的是,这种方法在遍历每个数字的每一位时,时间复杂度是O(d*n),其中d是数字的位数,n是数字的数量。因此,当数字很大时,这种方法可能会超时。在这种情况下,可以考虑其他更高效的算法,比如数位DP等。
Python统计1,99正整数区间所有数中,0到9出现的次数
同样可以使用循环和字符串处理来解决这个问题,代码和上面类似。具体实现如下:
```python
# 初始化每个数字的出现次数为0
counts = [0] * 10
for num in range(1, 100):
# 将数字转换为字符串,便于遍历每个数字
str_num = str(num)
for digit in str_num:
# 将字符串中的每个数字转换为整数,统计出现次数
counts[int(digit)] += 1
# 输出每个数字的出现次数
for i in range(10):
print("{}出现了{}次".format(i, counts[i]))
```
程序遍历了1到99的所有数字,统计每个数字中0到9出现的次数,并输出了每个数字的出现次数。