java算法----求从1到N中,4出现的个数带上注释
时间: 2023-10-06 21:05:17 浏览: 93
下面是带注释的 Java 代码:
```
public static int countDigitFour(int n) {
if (n <= 0) {
return 0; // 特判,如果 n <= 0,则直接返回 0
}
int res = 0; // 记录数字 4 出现的次数
int digit = 1; // 从个位开始考虑,位数初始化为 1
int high = n / 10; // 定义 high 为当前考虑的数位的高位
int cur = n % 10; // 定义 cur 为当前考虑的数位
int low = 0; // 定义 low 为当前考虑的数位的低位
while (high != 0 || cur != 0) {
if (cur < 4) { // 如果当前数位小于 4
res += high * digit; // 则当前数位上数字 4 出现的次数为高位数字 * 当前位数
} else if (cur == 4) { // 如果当前数位等于 4
res += high * digit + low + 1; // 则当前数位上数字 4 出现的次数为高位数字 * 当前位数 + 低位数字 + 1
} else { // 如果当前数位大于 4
res += (high + 1) * digit; // 则当前数位上数字 4 出现的次数为 (高位数字 + 1) * 当前位数
}
low += cur * digit; // 将当前数位的数字加入低位数字中
cur = high % 10; // 更新当前数位
high /= 10; // 更新高位数字
digit *= 10; // 更新位数
}
return res; // 返回数字 4 出现的次数
}
```
希望能够对你有所帮助!
阅读全文