请统计某个给定范围[L,R]的所有整数中,数字x出现的次数。 比如给定范围[2,22],x=2:数字2在该范围内一共出现了6次。java使用数位分解实现
时间: 2024-05-01 14:18:37 浏览: 82
delete--number.rar_K._delete namber_delete number_给定n位正整数
5星 · 资源好评率100%
Java代码如下:
```
public static int countDigit(int x, int n, int m) {
int count = 0;
int base = 1;
int lower = 0;
int current = 0;
int higher = 0;
while (n / base != 0) {
// 取当前位的值
lower = n - (n / base) * base;
current = (n / base) % 10;
higher = n / (base * 10);
// 根据当前位的值进行分类讨论
switch (current) {
case 0:
count += higher * base;
break;
case 1:
count += higher * base + lower + 1;
break;
default:
count += (higher + 1) * base;
break;
}
// 计算下一位
base *= 10;
}
return count;
}
public static int countDigitInRange(int x, int n, int m) {
if (x < 0 || x > 9 || n > m || n < 0 || m < 0) {
return 0;
}
// 计算范围内的数字x的个数
int count = countDigit(x, m, m) - countDigit(x, n - 1, m);
return count;
}
```
其中,countDigit(x, n, m)用于计算数字x在n到m范围内出现的次数,countDigitInRange(x, n, m)用于计算给定范围[n,m]内数字x出现的次数。
阅读全文